Files
XQKqueue/server/internal/domain/domain_test.go
2026-07-12 15:53:24 +08:00

41 lines
1.2 KiB
Go

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)
}
}