39 lines
1.1 KiB
Go
39 lines
1.1 KiB
Go
|
|
package logic
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"testing"
|
|||
|
|
|
|||
|
|
"github.com/gogf/gf/v2/os/gtime"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// ============================================================================
|
|||
|
|
// 约定 S10 单测(纯函数,不依赖 DB)
|
|||
|
|
//
|
|||
|
|
// level_expire_at IS NULL/零值 = 永久有效;续费 / 手动开通**不得把永久覆写成有限期**。
|
|||
|
|
// ============================================================================
|
|||
|
|
|
|||
|
|
func TestLevelExpireTransitionErr(t *testing.T) {
|
|||
|
|
future := gtime.New("2999-01-01 00:00:00")
|
|||
|
|
|
|||
|
|
cases := []struct {
|
|||
|
|
name string
|
|||
|
|
prevPermanent bool
|
|||
|
|
newExpire *gtime.Time
|
|||
|
|
wantErr bool
|
|||
|
|
}{
|
|||
|
|
{"永久 → 永久(NULL) 放行", true, nil, false},
|
|||
|
|
{"永久 → 有限期 拒绝(S10)", true, future, true},
|
|||
|
|
{"有限期 → 有限期 放行", false, future, false},
|
|||
|
|
{"有限期 → 永久(NULL) 放行", false, nil, false},
|
|||
|
|
}
|
|||
|
|
for _, c := range cases {
|
|||
|
|
err := levelExpireTransitionErr(c.prevPermanent, c.newExpire)
|
|||
|
|
if c.wantErr && err == nil {
|
|||
|
|
t.Errorf("%s: 期望报错,实得 nil", c.name)
|
|||
|
|
}
|
|||
|
|
if !c.wantErr && err != nil {
|
|||
|
|
t.Errorf("%s: 期望放行,实得 err=%v", c.name, err)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|