init push
This commit is contained in:
123
internal/domain/flight_data/completion_test.go
Normal file
123
internal/domain/flight_data/completion_test.go
Normal 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)
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user