71 lines
2.3 KiB
Go
71 lines
2.3 KiB
Go
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)
|
|
}
|
|
})
|
|
}
|
|
}
|