diff --git a/integration-test/endpoint_test.go b/integration-test/endpoint_test.go new file mode 100644 index 0000000..e48c0d4 --- /dev/null +++ b/integration-test/endpoint_test.go @@ -0,0 +1,116 @@ +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) + } + }) + } +}