406fb80661
Co-authored-by: multica-agent <github@multica.ai>
47 lines
1012 B
Go
47 lines
1012 B
Go
package common
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestEvaluateInactiveUserExpire(t *testing.T) {
|
|
now := time.Date(2026, 5, 27, 8, 0, 0, 0, time.UTC)
|
|
params := promoRuleParams{InactiveMonths: 3}
|
|
|
|
tests := []struct {
|
|
name string
|
|
lastExpire time.Time
|
|
want bool
|
|
}{
|
|
{
|
|
name: "permanent subscription is not inactive",
|
|
lastExpire: time.UnixMilli(0),
|
|
want: false,
|
|
},
|
|
{
|
|
name: "active subscription is not inactive",
|
|
lastExpire: now.Add(time.Hour),
|
|
want: false,
|
|
},
|
|
{
|
|
name: "expire at threshold is inactive",
|
|
lastExpire: now.AddDate(0, -3, 0),
|
|
want: true,
|
|
},
|
|
{
|
|
name: "expire before threshold is inactive",
|
|
lastExpire: now.AddDate(0, -3, -1),
|
|
want: true,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := evaluateInactiveUserExpire(tt.lastExpire, params, now); got != tt.want {
|
|
t.Fatalf("evaluateInactiveUserExpire() = %v, want %v", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|