package domain import ( "testing" "time" "calllinesystem/server/internal/model" ) func TestETAUsesIntervalForEveryNumber(t *testing.T) { result, err := CalculateETA(ETAInput{ PeopleAhead: 9, IntervalPerNumber: 90 * time.Second, Running: true, }) if err != nil || !result.Available { t.Fatalf("got %#v, %v", result, err) } if result.EstimateMinutes != 15 || result.MinMinutes != 15 || result.MaxMinutes != 15 { t.Fatalf("unexpected result %#v", result) } } func TestETAUnavailableWhenPaused(t *testing.T) { result, err := CalculateETA(ETAInput{Running: false}) if err != nil || result.Available || result.Reason != "queue_not_running" { t.Fatalf("got %#v, %v", result, err) } } func TestTicketRules(t *testing.T) { if !CanTransitionTicket(model.TicketCalled, model.TicketArrived) || !CanTransitionTicket(model.TicketArrived, model.TicketCompleted) { t.Fatal("expected normal transitions") } if CanTransitionTicket(model.TicketMissed, model.TicketWaiting) || CanTransitionTicket(model.TicketArrived, model.TicketMissed) { t.Fatal("missed tickets must be reissued at the tail") } number, err := DisplayNumber("", 12) if err != nil || number != "00012" { t.Fatalf("got %q, %v", number, err) } }