initiate test reference

This commit is contained in:
renaldybrada
2026-02-06 09:47:53 +07:00
parent f230f0a6cc
commit d7fd29f928
4 changed files with 213 additions and 0 deletions
@@ -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")
}
})
}
@@ -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")
}
})
}
@@ -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,
)
}
})
}
}
@@ -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)
}
}
})
}