init push

This commit is contained in:
2026-07-16 22:16:45 +07:00
commit 8b068bdb10
1021 changed files with 332816 additions and 0 deletions

View File

@@ -0,0 +1,94 @@
package mission
import "testing"
func TestComputeStatus(t *testing.T) {
tests := []struct {
name string
forms []FormStatus
want string
}{
{name: "no completed form is draft", forms: BuildForms("", FormFacts{FormKeyFlightData: StatusDraft}), want: StatusDraft},
{name: "single in progress form is in progress", forms: BuildForms("", FormFacts{FormKeyFlightData: StatusInProgress}), want: StatusInProgress},
{name: "all forms complete is complete", forms: BuildForms("", FormFacts{FormKeyFlightData: StatusCompleted}), want: StatusCompleted},
{name: "partial completion is on progress", forms: []FormStatus{{Key: FormKeyFlightData, Status: StatusCompleted}, {Key: "patient_data", Status: StatusDraft}}, want: StatusInProgress},
{name: "no forms defaults to draft", forms: nil, want: StatusDraft},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
if got := ComputeStatus(tc.forms); got != tc.want {
t.Fatalf("ComputeStatus(%+v) = %q, want %q", tc.forms, got, tc.want)
}
})
}
}
func TestBuildForms(t *testing.T) {
tests := []struct {
name string
missionTy string
facts FormFacts
want []FormStatus
}{
{
name: "hems has flight data and patient data",
missionTy: "HEMS",
facts: FormFacts{FormKeyFlightData: StatusCompleted},
want: []FormStatus{
{Key: FormKeyFlightData, Status: StatusCompleted},
{Key: FormKeyPatientData, Status: StatusDraft},
},
},
{
name: "cat has flight data only",
missionTy: "CAT",
facts: FormFacts{FormKeyFlightData: StatusDraft},
want: []FormStatus{{Key: FormKeyFlightData, Status: StatusDraft}},
},
{
name: "spo has flight data only",
missionTy: "SPO",
facts: FormFacts{FormKeyFlightData: StatusCompleted},
want: []FormStatus{{Key: FormKeyFlightData, Status: StatusCompleted}},
},
{
name: "nco has flight data only",
missionTy: "NCO",
facts: FormFacts{FormKeyFlightData: StatusDraft},
want: []FormStatus{{Key: FormKeyFlightData, Status: StatusDraft}},
},
{
name: "unknown mission type falls back to provided facts",
missionTy: "UNKNOWN",
facts: FormFacts{FormKeyFlightData: StatusCompleted, FormKeyPatientData: StatusDraft},
want: []FormStatus{
{Key: FormKeyFlightData, Status: StatusCompleted},
{Key: FormKeyPatientData, Status: StatusDraft},
},
},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
forms := BuildForms(tc.missionTy, tc.facts)
if len(forms) != len(tc.want) {
t.Fatalf("expected %d forms, got %d", len(tc.want), len(forms))
}
for i := range tc.want {
if forms[i].Key != tc.want[i].Key || forms[i].Status != tc.want[i].Status {
t.Fatalf("form %d = %+v, want %+v", i, forms[i], tc.want[i])
}
}
})
}
}
func TestFormStatus(t *testing.T) {
if got := formStatus(FormKeyFlightData, StatusCompleted); got.Status != StatusCompleted || got.Key != FormKeyFlightData {
t.Fatalf("unexpected completed form: %+v", got)
}
if got := formStatus(FormKeyFlightData, StatusDraft); got.Status != StatusDraft {
t.Fatalf("unexpected draft form: %+v", got)
}
}