You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.6 KiB
66 lines
2.6 KiB
package user
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"yunyan/comm"
|
|
"yunyan/pb"
|
|
)
|
|
|
|
// 开户礼 = VIP 天数 + 算力,两个数额由后台配置(comm.OpsParams)。
|
|
func TestApplyNewUserGift(t *testing.T) {
|
|
const now int64 = 1_700_000_000
|
|
p := comm.DefaultOpsParams()
|
|
u := &pb.DBUser{}
|
|
applyNewUserGift(u, now, p)
|
|
|
|
if got, want := u.Vipexptime, now+int64(p.NewUserGiftVipDays)*24*60*60; got != want {
|
|
t.Errorf("Vipexptime = %d, want %d(%d 天)", got, want, p.NewUserGiftVipDays)
|
|
}
|
|
if got, want := u.Computebalance, p.NewUserGiftCompute; got != want {
|
|
t.Errorf("Computebalance = %d, want %d", got, want)
|
|
}
|
|
// 旧三桶必须保持 0:它们已不是闸门,往里写值只会让老后台页面显示出「有余额」的假象
|
|
if u.Tradeintegral != 0 || u.Meetintegral != 0 || u.Aichatintegral != 0 {
|
|
t.Errorf("旧额度桶不应再发放: Trade=%d Meet=%d Ai=%d", u.Tradeintegral, u.Meetintegral, u.Aichatintegral)
|
|
}
|
|
}
|
|
|
|
// 后台把两项都配成 0 = 注册不送任何东西。这是合法配置,不能被当成「没配」而回落到默认值。
|
|
func TestApplyNewUserGiftZeroMeansNoGift(t *testing.T) {
|
|
const now int64 = 1_700_000_000
|
|
u := &pb.DBUser{}
|
|
applyNewUserGift(u, now, comm.OpsParams{NewUserGiftVipDays: 0, NewUserGiftCompute: 0})
|
|
if u.Vipexptime != 0 || u.Computebalance != 0 {
|
|
t.Errorf("配 0 应该什么都不送,得到 Vip=%d Compute=%d", u.Vipexptime, u.Computebalance)
|
|
}
|
|
}
|
|
|
|
// 只送算力、不送 VIP 也是合法配置。
|
|
func TestApplyNewUserGiftComputeOnly(t *testing.T) {
|
|
const now int64 = 1_700_000_000
|
|
u := &pb.DBUser{}
|
|
applyNewUserGift(u, now, comm.OpsParams{NewUserGiftVipDays: 0, NewUserGiftCompute: 500})
|
|
if u.Vipexptime != 0 {
|
|
t.Errorf("VIP 天数为 0 时不该设到期时间,得到 %d", u.Vipexptime)
|
|
}
|
|
if u.Computebalance != 500 {
|
|
t.Errorf("Computebalance = %d, want 500", u.Computebalance)
|
|
}
|
|
}
|
|
|
|
// 老用户不该被碰:applyNewUserGift 只在「新建用户」分支调用,
|
|
// 这里顺带守住它是直接赋值而非累加(新对象都是零值,累加与赋值等价;
|
|
// 万一将来有人挪去老用户路径,这个测试会提醒他先想清楚语义)。
|
|
func TestApplyNewUserGiftIsAssignNotAccumulate(t *testing.T) {
|
|
const now int64 = 1_700_000_000
|
|
p := comm.DefaultOpsParams()
|
|
u := &pb.DBUser{Computebalance: 999, Vipexptime: now + 12345}
|
|
applyNewUserGift(u, now, p)
|
|
if u.Computebalance != p.NewUserGiftCompute {
|
|
t.Errorf("应为赋值语义,得到 Compute=%d", u.Computebalance)
|
|
}
|
|
if u.Vipexptime != now+int64(p.NewUserGiftVipDays)*24*60*60 {
|
|
t.Errorf("VIP 应为赋值语义,得到 %d", u.Vipexptime)
|
|
}
|
|
}
|
|
|