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,123 @@
package flightdata
import (
"testing"
"time"
missiondomain "wucher/internal/domain/mission"
)
func TestIsComplete(t *testing.T) {
if IsComplete(nil) {
t.Fatal("expected nil row to be incomplete")
}
if IsComplete(&FlightData{Status: StatusInProgress}) {
t.Fatal("expected on_progress status to be incomplete")
}
if !IsComplete(&FlightData{Status: StatusCompleted}) {
t.Fatal("expected complete status to be complete")
}
}
func TestDeriveStatus(t *testing.T) {
now := time.Now().UTC()
base := &FlightData{
MissionID: []byte("1234567890123456"),
FromICAOID: []byte("3456789012345678"),
ToHospitalID: []byte("4567890123456789"),
FlightTakeOff: now,
FlightLanding: now,
FlightDuration: time.Hour,
LandingCount: 1,
DeliveryNoteNumber: "DN-1",
CustomerName: "Customer",
}
t.Run("cat complete", func(t *testing.T) {
base.Mission = &missiondomain.Mission{Type: "CAT"}
if got := DeriveStatus(base, nil); got != StatusCompleted {
t.Fatalf("expected complete, got %q", got)
}
})
t.Run("nco complete without rotor brake cycle", func(t *testing.T) {
base.Mission = &missiondomain.Mission{Type: "NCO"}
if got := DeriveStatus(base, nil); got != StatusCompleted {
t.Fatalf("expected complete, got %q", got)
}
})
t.Run("hems requires rotor brake cycle", func(t *testing.T) {
base.Mission = &missiondomain.Mission{Type: "HEMS"}
if got := DeriveStatus(base, nil); got != StatusInProgress {
t.Fatalf("expected on_progress, got %q", got)
}
base.RotorBrakeCycle = 1
if got := DeriveStatus(base, nil); got != StatusCompleted {
t.Fatalf("expected complete after rotor brake cycle is set, got %q", got)
}
base.RotorBrakeCycle = 0
})
t.Run("spo complete without details", func(t *testing.T) {
base.Mission = &missiondomain.Mission{Type: "SPO"}
if got := DeriveStatus(base, nil); got != StatusCompleted {
t.Fatalf("expected complete, got %q", got)
}
})
t.Run("spo complete with details", func(t *testing.T) {
base.Mission = &missiondomain.Mission{Type: "SPO"}
details := &SPODetails{
HESLO: SPOHESLODetails{
Flights: []SPOHESLOFlight{{
ROT: 1,
FuelTruckID: []byte("5678901234567890"),
LoggingSlingID: []byte("6789012345678901"),
}},
Slings: []SPOHESLOSling{{
HESLOFlightID: []byte("5678901234567890"),
SlingID: []byte("7890123456789012"),
}},
},
Logging: SPOLoggingDetails{
Slings: []SPOLoggingSling{{
SlingID: []byte("8901234567890123"),
}},
},
HEC: SPOHECDetails{
Flights: []SPOHECFlight{{
ROT: 1,
HECCycle: 1,
EquipmentID: []byte("9012345678901234"),
}},
Slings: []SPOHECSling{{
SlingID: []byte("0123456789012345"),
}},
Loads: []SPOHECLoad{{
LoadCategory: "LT200",
Quantity: 1,
}},
},
}
if got := DeriveStatus(base, details); got != StatusCompleted {
t.Fatalf("expected complete, got %q", got)
}
})
t.Run("spo missing section still complete", func(t *testing.T) {
base.Mission = &missiondomain.Mission{Type: "SPO"}
details := &SPODetails{
HESLO: SPOHESLODetails{
Flights: []SPOHESLOFlight{{
ROT: 1,
FuelTruckID: []byte("5678901234567890"),
LoggingSlingID: []byte("6789012345678901"),
}},
},
}
if got := DeriveStatus(base, details); got != StatusCompleted {
t.Fatalf("expected complete, got %q", got)
}
})
}