2026-05-29 19:56:14 +08:00

31 lines
1.1 KiB
Go

package integration
import (
"testing"
"time"
)
func TestHostSalarySettlementDueDates(t *testing.T) {
tests := []struct {
name string
now time.Time
wantHalfMonth bool
wantMonthEnd bool
}{
{name: "normal day", now: time.Date(2026, time.May, 14, 10, 0, 0, 0, time.UTC), wantHalfMonth: false, wantMonthEnd: false},
{name: "half month day", now: time.Date(2026, time.May, 15, 10, 0, 0, 0, time.UTC), wantHalfMonth: true, wantMonthEnd: false},
{name: "month end in 31 day month", now: time.Date(2026, time.May, 31, 10, 0, 0, 0, time.UTC), wantHalfMonth: false, wantMonthEnd: true},
{name: "month end in 28 day month", now: time.Date(2026, time.February, 28, 10, 0, 0, 0, time.UTC), wantHalfMonth: false, wantMonthEnd: true},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := isHostSalaryHalfMonthDue(tt.now); got != tt.wantHalfMonth {
t.Fatalf("half-month due mismatch: got %v want %v", got, tt.wantHalfMonth)
}
if got := isHostSalaryMonthEndDue(tt.now); got != tt.wantMonthEnd {
t.Fatalf("month-end due mismatch: got %v want %v", got, tt.wantMonthEnd)
}
})
}
}