Files
kra-new/internal/service/business/date_range_test.go
T

48 lines
2.0 KiB
Go

package business
import (
"context"
"kra/internal/service/dto"
"testing"
)
func TestRejectIncompleteAndReversedDateRanges(t *testing.T) {
for _, dates := range [][2]string{{"2026-11-01", ""}, {"", "2026-11-01"}, {"2026-11-03", "2026-11-01"}, {"bad", "2026-11-01"}} {
if _, err := analyticsRequest(&dto.AnalyticsQuery{BeginTime: dates[0], EndTime: dates[1]}); dates[0] != "" && dates[1] != "" && err == nil {
t.Errorf("analytics accepted %v", dates)
}
for _, spend := range []bool{false, true} {
_, _, err := ledgerRequest(&dto.LedgerQuery{BeginRegisterTime: dates[0], EndRegisterTime: dates[1], BeginPayTime: dates[0], EndPayTime: dates[1]}, spend)
if err == nil {
t.Errorf("ledger accepted %v (spend=%v)", dates, spend)
}
}
}
for _, dates := range [][2]string{{"", ""}, {"2026-11-01", "2026-11-01"}} {
if _, err := analyticsRequest(&dto.AnalyticsQuery{BeginTime: dates[0], EndTime: dates[1]}); err != nil {
t.Fatal(err)
}
if _, _, err := ledgerRequest(&dto.LedgerQuery{BeginPayTime: dates[0], EndPayTime: dates[1]}, true); err != nil {
t.Fatal(err)
}
}
s := &AccountService{}
if _, err := s.List(context.Background(), &dto.BusinessAccountQuery{BeginTime: "2026-11-01 00:00:00"}); err == nil {
t.Fatal("account query silently ignored incomplete date range")
}
}
func TestAnalyticsDateBoundsPassThroughToUsecase(t *testing.T) {
for _, dates := range [][2]string{{"", ""}, {"2026-11-01", ""}, {"", "2026-11-03"}} {
filter, err := analyticsRequest(&dto.AnalyticsQuery{BeginTime: dates[0], EndTime: dates[1]})
if err != nil || (filter.StartDate == nil) != (dates[0] == "") || (filter.EndDate == nil) != (dates[1] == "") {
t.Fatalf("独立起止日期必须原样传递给业务层填充默认值: %+v %v", filter, err)
}
}
for _, dates := range [][2]string{{"bad", ""}, {"", "bad"}, {"2026-11-03", "2026-11-01"}} {
if _, err := analyticsRequest(&dto.AnalyticsQuery{BeginTime: dates[0], EndTime: dates[1]}); err == nil {
t.Fatalf("invalid dates accepted: %v", dates)
}
}
}