81 lines
1.5 KiB
Go
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)
|
|
}
|
|
})
|
|
}
|
|
}
|