Files
sub2api/backend/internal/service/custom_group_usage_rollup_test.go
T
lyen1688 89d826be29 修复:解决分组用量 PR 的 CI 失败
恢复分组时区测试进入前的全局时区,避免污染高峰计费和支付租约测试。同步升级 Go 1.26.6 与 nanoid 3.3.18,清除后端和前端安全门禁。
2026-08-14 23:25:31 +08:00

51 lines
1.6 KiB
Go

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