package integrationTest import ( "net/http" "testing" ) const BASEURL = "http://localhost:9000/" func TestGetEndpoint(t *testing.T) { defaultDashboardParam := "?month=1&year=2025" endpoints := []string{ "ping", // references "api/reference/diagnosa", "api/reference/dokter", "api/reference/kategori", "api/reference/pasien", "api/reference/spesialis", "api/reference/sub-spesialis", "api/reference/tindakan", // dashboard "api/dashboard/antrian-per-hari" + defaultDashboardParam, "api/dashboard/antrian-per-kategori", "api/dashboard/antrian-per-spesialis", "api/dashboard/perbandingan-kategori-antrian" + defaultDashboardParam, "api/dashboard/perbandingan-status-antrian" + defaultDashboardParam, "api/dashboard/table-antrian-per-spesialis" + defaultDashboardParam, "api/dashboard/table-antrian-per-subspesialis" + defaultDashboardParam, // antrian-operasi "api/antrian-operasi", } for _, ep := range endpoints { t.Run(ep, func(t *testing.T) { resp, err := http.Get(BASEURL + ep) if err != nil { t.Fatalf("endpoint %s error: %v", ep, err) } if resp.StatusCode >= 201 { t.Fatalf("endpoint %s broken : %v", ep, resp.Status) } }) } } type searchableTest struct { testcase string endpoint string querySearch string } func TestSearchableEndpoint(t *testing.T) { cases := []searchableTest{ {testcase: "search diagnosa list", endpoint: "api/reference/diagnosa", querySearch: "abs"}, {testcase: "search dokter list", endpoint: "api/reference/dokter", querySearch: "agus"}, {testcase: "search kategori list", endpoint: "api/reference/kategori", querySearch: "elektif"}, {testcase: "search pasien list", endpoint: "api/reference/pasien", querySearch: "rudi"}, {testcase: "search spesialis list", endpoint: "api/reference/spesialis", querySearch: "urolog"}, {testcase: "search subspesialis list", endpoint: "api/reference/sub-spesialis", querySearch: "bedah"}, {testcase: "search tindakan list", endpoint: "api/reference/tindakan", querySearch: "procedure"}, {testcase: "search antrian operasi list", endpoint: "api/antrian-operasi", querySearch: "110393243"}, } for _, c := range cases { t.Run(c.testcase, func(t *testing.T) { resp, err := http.Get(BASEURL + c.endpoint + "?search=" + c.querySearch) if err != nil { t.Fatalf("endpoint %s error with search %s: %v", c.endpoint, c.querySearch, err) } if resp.StatusCode >= 201 { t.Fatalf("endpoint %s broken : %v", c.endpoint, resp.Status) } }) } } type antrianOperasiCase struct { testcase string queryParams string } func TestListAntrianOperasiParams(t *testing.T) { cases := []antrianOperasiCase{ {testcase: "get all antrian", queryParams: "?type=all"}, {testcase: "get antrian by kategori", queryParams: "?type=kategori&type_id=1"}, {testcase: "get antrian by spesialis", queryParams: "?type=spesialis&type_id=3"}, {testcase: "get antrian by spesialis", queryParams: "?type=spesialis&type_id=4"}, {testcase: "get antrian by sub-spesialis", queryParams: "?type=sub-spesialis&type_id=27"}, {testcase: "get antrian by status 'belum'", queryParams: "?status=1"}, {testcase: "get antrian by status 'sudah'", queryParams: "?status=2"}, {testcase: "get antrian by status 'tunda'", queryParams: "?status=3"}, {testcase: "get antrian by status 'batal'", queryParams: "?status=4"}, } endpoint := BASEURL + "api/antrian-operasi" for _, c := range cases { t.Run(c.testcase, func(t *testing.T) { resp, err := http.Get(endpoint + c.queryParams) if err != nil { t.Fatalf("endpoint %s error: %v", endpoint, err) } if resp.StatusCode >= 201 { t.Fatalf("endpoint %s broken : %v", endpoint, resp.Status) } }) } }