feat(expiry): 完成 #21 物品与设置模型实现
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
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)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user