From d7fd29f928c6669a7e615f283dae963e16ac31d9 Mon Sep 17 00:00:00 2001 From: renaldybrada Date: Fri, 6 Feb 2026 09:47:53 +0700 Subject: [PATCH] initiate test reference --- .../reference/diagnosa/diagnosa_test.go | 50 ++++++++++++ .../domain/reference/dokter/dokter_test.go | 52 +++++++++++++ .../domain/reference/pasien/pasien_test.go | 77 +++++++++++++++++++ .../reference/tindakan/tindakan_test.go | 34 ++++++++ 4 files changed, 213 insertions(+) create mode 100644 internal/domain/reference/diagnosa/diagnosa_test.go create mode 100644 internal/domain/reference/dokter/dokter_test.go create mode 100644 internal/domain/reference/pasien/pasien_test.go create mode 100644 internal/domain/reference/tindakan/tindakan_test.go diff --git a/internal/domain/reference/diagnosa/diagnosa_test.go b/internal/domain/reference/diagnosa/diagnosa_test.go new file mode 100644 index 0000000..fbd7c07 --- /dev/null +++ b/internal/domain/reference/diagnosa/diagnosa_test.go @@ -0,0 +1,50 @@ +package diagnosa + +import "testing" + +func TestDiagnosaResponse(t *testing.T) { + dataSet := []struct { + model DiagnosaModel + expected DiagnosaResponse + }{ + { + model: DiagnosaModel{KodeDiagnosa: "XXX", JenisPenyakit: "Penyakit X"}, + expected: DiagnosaResponse{KodeIcd: "XXX", Keterangan: "Penyakit X", Select: "XXX | Penyakit X"}, + }, + { + model: DiagnosaModel{KodeDiagnosa: "YYY", JenisPenyakit: "Penyakit Y"}, + expected: DiagnosaResponse{KodeIcd: "YYY", Keterangan: "Penyakit Y", Select: "YYY | Penyakit Y"}, + }, + { + model: DiagnosaModel{KodeDiagnosa: "ZZZ", JenisPenyakit: "Penyakit Z"}, + expected: DiagnosaResponse{KodeIcd: "ZZZ", Keterangan: "Penyakit Z", Select: "ZZZ | Penyakit Z"}, + }, + } + + t.Run("test parsing diagnosa", func(t *testing.T) { + for _, tt := range dataSet { + response := tt.model.ToResponse() + + if response.KodeIcd != tt.expected.KodeIcd || response.Keterangan != tt.expected.Keterangan || response.Select != tt.expected.Select { + t.Fatalf("expected %v got %v", tt.expected, response) + } + } + + }) +} + +func TestListDiagnosaResponse(t *testing.T) { + listModel := ListDiagnosaModel{ + {KodeDiagnosa: "XXX", JenisPenyakit: "Penyakit X"}, + {KodeDiagnosa: "YYY", JenisPenyakit: "Penyakit Y"}, + {KodeDiagnosa: "ZZZ", JenisPenyakit: "Penyakit Z"}, + } + + 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") + } + }) +} diff --git a/internal/domain/reference/dokter/dokter_test.go b/internal/domain/reference/dokter/dokter_test.go new file mode 100644 index 0000000..9c37ea6 --- /dev/null +++ b/internal/domain/reference/dokter/dokter_test.go @@ -0,0 +1,52 @@ +package dokter + +import ( + "database/sql" + "testing" +) + +func TestParsingDokter(t *testing.T) { + testData := []struct { + data DokterModel + expected string + }{ + { + data: DokterModel{NamaDepan: "Agus", NamaBelakang: "Bayu"}, + expected: "AGUS BAYU", + }, + { + data: DokterModel{NamaDepan: "Chandra", NamaBelakang: "Dinata"}, + expected: "CHANDRA DINATA", + }, + { + data: DokterModel{NamaDepan: "Eka", NamaBelakang: "Fahmi"}, + expected: "EKA FAHMI", + }, + } + + 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", "A", "B", sql.NullString{}, "test-ksm-1"}, + DokterModel{"test-id-2", "test-nip-2", "C", "D", sql.NullString{}, "test-ksm-2"}, + DokterModel{"test-id-3", "test-nip-3", "E", "F", sql.NullString{}, "test-ksm-3"}, + } + + 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") + } + }) +} diff --git a/internal/domain/reference/pasien/pasien_test.go b/internal/domain/reference/pasien/pasien_test.go new file mode 100644 index 0000000..dcf506a --- /dev/null +++ b/internal/domain/reference/pasien/pasien_test.go @@ -0,0 +1,77 @@ +package pasien + +import ( + "testing" + "time" +) + +type testDataAgeCalculator struct { + name string + birthday time.Time + now time.Time + expected Age +} + +func parseDate(s string) time.Time { + t, err := time.Parse("2006-01-02", s) + if err != nil { + panic(err) + } + + return t +} + +func TestAgeCalculator(t *testing.T) { + dataSet := []testDataAgeCalculator{ + { + name: "2 month 1 day difference", + birthday: parseDate("1998-07-15"), + now: parseDate("1998-09-16"), + expected: Age{Years: 0, Months: 2, Days: 1}, + }, + { + name: "same day", + birthday: parseDate("1998-07-15"), + now: parseDate("1998-07-15"), + expected: Age{Years: 0, Months: 0, Days: 0}, + }, + { + name: "1 Year 2 month 3 day difference", + birthday: parseDate("1998-07-15"), + now: parseDate("1999-09-18"), + expected: Age{Years: 1, Months: 2, Days: 3}, + }, + { + name: "1 Year 1 month 29 day difference", + birthday: parseDate("1998-07-15"), + now: parseDate("1999-09-13"), + expected: Age{Years: 1, Months: 1, Days: 29}, + }, + { + name: "0 Year 10 month 29 day difference", + birthday: parseDate("1998-07-15"), + now: parseDate("1999-05-13"), + expected: Age{Years: 0, Months: 9, Days: 28}, + }, + { + name: "birthday after now", + birthday: parseDate("1998-07-15"), + now: parseDate("1997-05-13"), + expected: Age{Years: 0, Months: 0, Days: 0}, + }, + } + + for _, tt := range dataSet { + t.Run(tt.name, func(t *testing.T) { + calc := CalculateAge(tt.birthday, tt.now) + + if calc != tt.expected { + t.Fatalf( + "expected %+v, got %+v", + tt.expected, + calc, + ) + } + }) + } +} diff --git a/internal/domain/reference/tindakan/tindakan_test.go b/internal/domain/reference/tindakan/tindakan_test.go new file mode 100644 index 0000000..91b7ce4 --- /dev/null +++ b/internal/domain/reference/tindakan/tindakan_test.go @@ -0,0 +1,34 @@ +package tindakan + +import "testing" + +func TestTindakanResponse(t *testing.T) { + dataSet := []struct { + model TindakanModel + expected TindakanResponse + }{ + { + model: TindakanModel{KodeTindakan: "XXX", Keterangan: "Tindakan X"}, + expected: TindakanResponse{Kode: "XXX", Keterangan: "Tindakan X", Select: "XXX | Tindakan X"}, + }, + { + model: TindakanModel{KodeTindakan: "YYY", Keterangan: "Tindakan Y"}, + expected: TindakanResponse{Kode: "YYY", Keterangan: "Tindakan Y", Select: "YYY | Tindakan Y"}, + }, + { + model: TindakanModel{KodeTindakan: "ZZZ", Keterangan: "Tindakan Z"}, + expected: TindakanResponse{Kode: "ZZZ", Keterangan: "Tindakan Z", Select: "ZZZ | Tindakan Z"}, + }, + } + + t.Run("test parsing tindakan", func(t *testing.T) { + for _, tt := range dataSet { + response := tt.model.ToResponse() + + if response.Kode != tt.expected.Kode || response.Keterangan != tt.expected.Keterangan || response.Select != tt.expected.Select { + t.Fatalf("expected %v got %v", tt.expected, response) + } + } + + }) +}