Files
fm_be/internal/shared/pkg/util/shift_clock_test.go
2026-07-16 22:16:45 +07:00

71 lines
2.3 KiB
Go

package util
import (
"testing"
"time"
basedomain "wucher/internal/domain/base"
)
func TestResolveShiftWindowUsesOperationalShiftWithinDateRange(t *testing.T) {
base := &basedomain.Base{
DefaultStartTimeType: basedomain.ShiftTimeTypeFixed,
DefaultEndTimeType: basedomain.ShiftTimeTypeFixed,
DefaultShiftStart: "09:00",
DefaultShiftEnd: "21:00",
OperationalShiftTimes: []basedomain.BaseOperationalShiftTime{
{
DateStart: timePtr(time.Date(2026, time.June, 1, 0, 0, 0, 0, time.UTC)),
DateEnd: timePtr(time.Date(2026, time.June, 30, 0, 0, 0, 0, time.UTC)),
StartTimeType: basedomain.ShiftTimeTypeFixed,
EndTimeType: basedomain.ShiftTimeTypeFixed,
ShiftStart: "10:00",
ShiftEnd: "22:00",
},
},
}
start, end, err := ResolveShiftWindow(base, time.Date(2026, time.June, 15, 0, 0, 0, 0, time.UTC))
if err != nil {
t.Fatalf("ResolveShiftWindow returned error: %v", err)
}
if start != "10:00" || end != "22:00" {
t.Fatalf("expected operational shift 10:00-22:00, got %s-%s", start, end)
}
start, end, err = ResolveShiftWindow(base, time.Date(2026, time.July, 1, 0, 0, 0, 0, time.UTC))
if err != nil {
t.Fatalf("ResolveShiftWindow returned error: %v", err)
}
if start != "09:00" || end != "21:00" {
t.Fatalf("expected default shift 09:00-21:00, got %s-%s", start, end)
}
}
func TestPickShiftForDatePreservesCalendarDateFromLocalTimezone(t *testing.T) {
jakarta := time.FixedZone("UTC+7", 7*60*60)
shift := basedomain.BaseOperationalShiftTime{
DateStart: timePtr(time.Date(2026, time.June, 1, 0, 0, 0, 0, jakarta)),
DateEnd: timePtr(time.Date(2026, time.June, 30, 0, 0, 0, 0, jakarta)),
StartTimeType: basedomain.ShiftTimeTypeFixed,
EndTimeType: basedomain.ShiftTimeTypeFixed,
ShiftStart: "10:00",
ShiftEnd: "22:00",
}
base := &basedomain.Base{
OperationalShiftTimes: []basedomain.BaseOperationalShiftTime{shift},
}
picked := PickShiftForDate(base, time.Date(2026, time.June, 1, 0, 0, 0, 0, time.UTC))
if picked == nil {
t.Fatalf("expected operational shift to match calendar date from local timezone")
}
if picked.ShiftStart != "10:00" || picked.ShiftEnd != "22:00" {
t.Fatalf("unexpected picked shift %s-%s", picked.ShiftStart, picked.ShiftEnd)
}
}
func timePtr(v time.Time) *time.Time {
return &v
}