Files

33 lines
1.1 KiB
Go
Raw Permalink Normal View History

package saas
import (
"testing"
"time"
)
func TestHomeCalendarWeekUsesBeijingAcrossHostZonesAndBoundaries(t *testing.T) {
cases := []struct{ instant, start, end string }{
{"2026-10-04T15:59:59Z", "2026-09-28", "2026-10-05"},
{"2026-10-04T16:00:00Z", "2026-10-05", "2026-10-12"},
{"2026-10-05T16:00:00Z", "2026-10-05", "2026-10-12"},
{"2025-12-31T16:00:00Z", "2025-12-29", "2026-01-05"},
{"2026-03-08T16:00:00Z", "2026-03-09", "2026-03-16"},
}
for _, tc := range cases {
at, err := time.Parse(time.RFC3339, tc.instant)
if err != nil {
t.Fatal(err)
}
for _, offset := range []int{-7 * 3600, 0, 8 * 3600, 9 * 3600} {
start, end, err := homeCalendarWeek(at.In(time.FixedZone("host", offset)))
if err != nil {
t.Fatal(err)
}
_, gotOffset := start.Zone()
if start.Location().String() != "Asia/Shanghai" || gotOffset != 8*3600 || start.Format("2006-01-02") != tc.start || end.Format("2006-01-02") != tc.end || start.Hour() != 0 || end.Sub(start) != 7*24*time.Hour {
t.Fatalf("instant=%s hostOffset=%d start=%s end=%s", tc.instant, offset, start, end)
}
}
}
}