package cardpackage import ( "testing" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/consts" "github.com/gogf/gf/v2/os/gtime" ) func TestOrderTypeForBusinessType(t *testing.T) { tests := []struct { name string businessType int want int }{ {name: "subscribe", businessType: consts.PackageBusinessTypeSubscribe, want: consts.OrderTypeCardSubscribe}, {name: "renew", businessType: consts.PackageBusinessTypeRenew, want: consts.OrderTypeCardRenew}, {name: "change", businessType: consts.PackageBusinessTypeChange, want: consts.OrderTypeCardChange}, {name: "unknown defaults to subscribe", businessType: 99, want: consts.OrderTypeCardSubscribe}, } for _, test := range tests { t.Run(test.name, func(t *testing.T) { if got := orderTypeForBusinessType(test.businessType); got != test.want { t.Fatalf("orderTypeForBusinessType(%d) = %d, want %d", test.businessType, got, test.want) } }) } } func TestCalcPackageStatuses(t *testing.T) { now := gtime.NewFromStr("2026-10-27 12:00:00") tests := []struct { name string beginAt, endAt *gtime.Time wantPackage, wantBind int }{ { name: "renew period already effective", beginAt: gtime.NewFromStr("2026-09-30 23:59:59"), endAt: gtime.NewFromStr("2027-09-30 23:59:59"), wantPackage: consts.PackageStatusEffective, wantBind: consts.EffectiveStatusEffective, }, { name: "renew period starts in future", beginAt: gtime.NewFromStr("2026-11-01 23:59:59"), endAt: gtime.NewFromStr("2027-11-01 23:59:59"), wantPackage: consts.PackageStatusPending, wantBind: consts.EffectiveStatusPending, }, { name: "renew period already expired", beginAt: gtime.NewFromStr("2025-09-30 23:59:59"), endAt: gtime.NewFromStr("2026-09-30 23:59:59"), wantPackage: consts.PackageStatusExpired, wantBind: consts.EffectiveStatusExpired, }, } for _, test := range tests { t.Run(test.name, func(t *testing.T) { packageStatus, effectiveStatus := calcPackageStatuses(now, test.beginAt, test.endAt) if packageStatus != test.wantPackage || effectiveStatus != test.wantBind { t.Fatalf("calcPackageStatuses() = (%d, %d), want (%d, %d)", packageStatus, effectiveStatus, test.wantPackage, test.wantBind) } }) } }