| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- //go:build unit
- package service
- import (
- "testing"
- "time"
- appTimezone "github.com/Wei-Shaw/sub2api/internal/pkg/timezone"
- "github.com/stretchr/testify/require"
- )
- func useGroupUsageTestTimezone(t *testing.T, name string) {
- t.Helper()
- previousName := appTimezone.Name()
- require.NoError(t, appTimezone.Init(name))
- t.Cleanup(func() { require.NoError(t, appTimezone.Init(previousName)) })
- }
- func TestGroupUsageDateUsesConfiguredTimezoneBoundary(t *testing.T) {
- useGroupUsageTestTimezone(t, "America/New_York")
- beforeMidnight := time.Date(2026, 3, 9, 3, 59, 59, 0, time.UTC)
- atMidnight := time.Date(2026, 3, 9, 4, 0, 0, 0, time.UTC)
- require.Equal(t, "2026-03-08", GroupUsageDate(beforeMidnight))
- require.Equal(t, "2026-03-09", GroupUsageDate(atMidnight))
- require.Equal(t, atMidnight, GroupUsageTodayStart(atMidnight))
- }
- func TestGroupUsageParseDateUsesConfiguredTimezone(t *testing.T) {
- useGroupUsageTestTimezone(t, "America/New_York")
- parsed, err := ParseGroupUsageDate("2026-03-08")
- require.NoError(t, err)
- require.Equal(t, time.Date(2026, 3, 8, 5, 0, 0, 0, time.UTC), parsed.UTC())
- require.Equal(t, "America/New_York", parsed.Location().String())
- }
- func TestGroupUsageYesterdayStartHandlesDST(t *testing.T) {
- useGroupUsageTestTimezone(t, "America/New_York")
- todayStart := time.Date(2026, 3, 9, 4, 0, 0, 0, time.UTC)
- yesterdayStart := GroupUsageYesterdayStart(todayStart)
- require.Equal(t, time.Date(2026, 3, 8, 5, 0, 0, 0, time.UTC), yesterdayStart)
- require.Equal(t, 23*time.Hour, todayStart.Sub(yesterdayStart))
- require.Equal(t, "America/New_York", GroupUsageTimezoneName())
- }
|