Files
wx_service/internal/expiry/model_test.go
T

81 lines
1.5 KiB
Go

package expiry
import (
"testing"
"time"
)
func TestCalculateDaysLeft(t *testing.T) {
base := dateOnly(time.Now())
item := &ExpiryItem{
ExpiryDate: base.AddDate(0, 0, 5),
}
if daysLeft := item.CalculateDaysLeft(); daysLeft != 5 {
t.Fatalf("expected daysLeft=5, got %d", daysLeft)
}
}
func TestCalculateStatus(t *testing.T) {
base := dateOnly(time.Now())
tests := []struct {
name string
item ExpiryItem
wantStatus string
}{
{
name: "已过期",
item: ExpiryItem{
ExpiryDate: base.AddDate(0, 0, -1),
},
wantStatus: StatusExpired,
},
{
name: "今天过期",
item: ExpiryItem{
ExpiryDate: base,
},
wantStatus: StatusExpiring,
},
{
name: "7天内即将过期",
item: ExpiryItem{
ExpiryDate: base.AddDate(0, 0, 7),
},
wantStatus: StatusExpiring,
},
{
name: "正常状态",
item: ExpiryItem{
ExpiryDate: base.AddDate(0, 0, 8),
},
wantStatus: StatusNormal,
},
{
name: "保留已使用状态",
item: ExpiryItem{
ExpiryDate: base.AddDate(0, 0, -10),
Status: StatusUsed,
},
wantStatus: StatusUsed,
},
{
name: "保留已丢弃状态",
item: ExpiryItem{
ExpiryDate: base.AddDate(0, 0, -10),
Status: StatusDiscarded,
},
wantStatus: StatusDiscarded,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := tt.item.CalculateStatus()
if got != tt.wantStatus {
t.Fatalf("expected status=%s, got %s", tt.wantStatus, got)
}
})
}
}