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.
57 lines
2.4 KiB
57 lines
2.4 KiB
package user
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"yunyan/comm"
|
|
)
|
|
|
|
// 客户端拿到的就是这三个布尔值,各端据此决定「提示更新 / 阻断使用 / 隐藏未过审功能」,
|
|
// 判定错了直接表现为线上事故,故逐个组合固化。
|
|
func TestEvalChannelUpgrade(t *testing.T) {
|
|
cfg := &comm.ChannelApp{Version: "1.10.0", MinVersion: "1.5.0", ForceUpdate: true, ReviewVersion: "1.11.0"}
|
|
|
|
cases := []struct {
|
|
name string
|
|
cfg *comm.ChannelApp
|
|
client string
|
|
need, force, reviewing bool
|
|
}{
|
|
{"低于最低支持版本:强更", cfg, "1.4.9", true, true, false},
|
|
{"高于最低支持、低于线上:只提示更新", cfg, "1.9.0", true, false, false},
|
|
{"已是线上最新:什么都不提示", cfg, "1.10.0", false, false, false},
|
|
{"高于线上版本(内测包):不提示", cfg, "1.11.0", false, false, true},
|
|
{"送审版本:标记审核期", cfg, "1.11.0", false, false, true},
|
|
{"客户端未上报版本:一律 false,不能把老客户端全挡住", cfg, "", false, false, false},
|
|
{"该渠道未配置:一律 false", nil, "1.0.0", false, false, false},
|
|
{"字符串比较陷阱:1.9 < 1.10 应判定为需更新", cfg, "1.9.9", true, false, false},
|
|
}
|
|
for _, c := range cases {
|
|
t.Run(c.name, func(t *testing.T) {
|
|
need, force, reviewing := evalChannelUpgrade(c.cfg, c.client)
|
|
if need != c.need || force != c.force || reviewing != c.reviewing {
|
|
t.Fatalf("client=%q 得到 need=%v force=%v reviewing=%v,期望 need=%v force=%v reviewing=%v",
|
|
c.client, need, force, reviewing, c.need, c.force, c.reviewing)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
// 运营把最低支持版本填得比线上版本还高时,不能出现「必须更新但没有更新可用」这种客户端无解的组合。
|
|
func TestEvalChannelUpgradeForceImpliesNeed(t *testing.T) {
|
|
cfg := &comm.ChannelApp{Version: "1.0.0", MinVersion: "2.0.0", ForceUpdate: true}
|
|
need, force, _ := evalChannelUpgrade(cfg, "1.5.0")
|
|
if !force {
|
|
t.Fatal("低于最低支持版本应强更")
|
|
}
|
|
if !need {
|
|
t.Fatal("强更时 needupdate 必须同时为 true,否则客户端会收到「必须更新但无更新」")
|
|
}
|
|
}
|
|
|
|
// 停用/草稿的渠道由 model 层过滤成 nil,这里确认 nil 不会 panic 也不会误判。
|
|
func TestEvalChannelUpgradeNilSafe(t *testing.T) {
|
|
if need, force, reviewing := evalChannelUpgrade(nil, "1.0.0"); need || force || reviewing {
|
|
t.Fatal("nil 配置必须全 false")
|
|
}
|
|
}
|
|
|