package dokter import ( "antrian-operasi/internal/shared" "database/sql" "testing" ) func TestParsingDokter(t *testing.T) { testData := []struct { data DokterModel expected string }{ { data: DokterModel{ NamaDepan: shared.NullString("Agus"), NamaBelakang: shared.NullString("Bayu"), GelarDepan: []string{"Dr", "dr."}, GelarBelakang: []string{"Sp.Onk.Rad", "Sp.P(K)"}, }, expected: "Dr dr. AGUS BAYU Sp.Onk.Rad, Sp.P(K)", }, { data: DokterModel{ NamaDepan: shared.NullString("Chandra"), NamaBelakang: shared.NullString("Dinata"), GelarDepan: []string{"dr."}, GelarBelakang: []string{"Sp.PD-KR"}, }, expected: "dr. CHANDRA DINATA Sp.PD-KR", }, { data: DokterModel{ NamaDepan: shared.NullString("Eka"), NamaBelakang: shared.NullString("Fahmi"), GelarDepan: []string{"Prof", "drg."}, GelarBelakang: []string{"Sp.KG", "Ph.D"}, }, expected: "Prof drg. EKA FAHMI Sp.KG, Ph.D", }, } t.Run("test parsing nama lengkap dokter", func(t *testing.T) { for _, tt := range testData { response := tt.data.ToResponse() if response.NamaLengkap != tt.expected { t.Fatalf("expected %v got %v", tt.expected, response.NamaLengkap) } } }) } func TestParsingListDokter(t *testing.T) { listModel := ListDokterModel{ DokterModel{"test-id-1", "test-nip-1", shared.NullString("A"), shared.NullString("B"), sql.NullString{}, "test-ksm-1", []string{}, []string{}}, DokterModel{"test-id-2", "test-nip-2", shared.NullString("C"), shared.NullString("D"), sql.NullString{}, "test-ksm-2", []string{}, []string{}}, DokterModel{"test-id-3", "test-nip-3", shared.NullString("E"), shared.NullString("F"), sql.NullString{}, "test-ksm-3", []string{}, []string{}}, } t.Run("test length model list and list response", func(t *testing.T) { response := listModel.ToResponseList() if len(listModel) != len(response) { t.Fatalf("length difference between model and response") } }) }