feat: add lab package registration endpoint
This commit is contained in:
50
internal/http/lab_package_test.go
Normal file
50
internal/http/lab_package_test.go
Normal file
@@ -0,0 +1,50 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"primaya-api/cpone-middleware/internal/repository"
|
||||
)
|
||||
|
||||
func TestAddLabPackageValidPayload(t *testing.T) {
|
||||
repo := &fakeLabRegistrationRepository{outcome: repository.LabRegistrationOutcome{
|
||||
HTTPStatus: 201, Success: true, Status: "package_added",
|
||||
Message: "Paket dispenser berhasil ditambahkan ke registrasi laboratorium",
|
||||
}}
|
||||
handler := Handler{labRepo: repo}
|
||||
request := httptest.NewRequest(http.MethodPost, "/packages", strings.NewReader(`{"paket_id":"disp-260800011","cito":true,"markup_cito":"10","catatan":" test ","channel":"cpone"}`))
|
||||
request.SetPathValue("regId", "lab-2608210003")
|
||||
recorder := httptest.NewRecorder()
|
||||
handler.AddLabPackage(recorder, request)
|
||||
if recorder.Code != http.StatusCreated {
|
||||
t.Fatalf("status=%d body=%s", recorder.Code, recorder.Body.String())
|
||||
}
|
||||
if repo.regID != "LAB-2608210003" || repo.packageParams.PackageID != "DISP-260800011" || !repo.packageParams.Cito || repo.packageParams.MarkupCito != 10 || repo.packageParams.Notes != "test" || repo.packageParams.Channel != "CPONE" {
|
||||
t.Fatalf("unexpected repository call: reg=%q params=%+v", repo.regID, repo.packageParams)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAddLabPackageValidation(t *testing.T) {
|
||||
tests := []struct{ name, regID, body, message string }{
|
||||
{"invalid registration", "LAB/1", `{"paket_id":"DISP-1"}`, "Nomor registrasi laboratorium hanya boleh berisi huruf, angka, dan tanda hubung"},
|
||||
{"missing package", "LAB-1", `{}`, "Paket ID wajib diisi"},
|
||||
{"invalid package", "LAB-1", `{"paket_id":"DISP/1"}`, "Paket ID hanya boleh berisi huruf, angka, dan tanda hubung"},
|
||||
{"invalid cito", "LAB-1", `{"paket_id":"DISP-1","cito":"true"}`, "The cito field must be true or false."},
|
||||
{"invalid markup", "LAB-1", `{"paket_id":"DISP-1","markup_cito":101}`, "The markup cito must be between 0 and 100."},
|
||||
}
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
handler := Handler{labRepo: &fakeLabRegistrationRepository{}}
|
||||
request := httptest.NewRequest(http.MethodPost, "/packages", strings.NewReader(test.body))
|
||||
request.SetPathValue("regId", test.regID)
|
||||
recorder := httptest.NewRecorder()
|
||||
handler.AddLabPackage(recorder, request)
|
||||
if recorder.Code != 422 || !strings.Contains(recorder.Body.String(), test.message) {
|
||||
t.Fatalf("status=%d body=%s", recorder.Code, recorder.Body.String())
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user