package task import ( "dsbqj-admin/model/mongo/version" "testing" ) func TestVersionsCheckEnvVersionAndDefault(t *testing.T) { versions := VersionInit() channel := new(ChannelVersions) releaseDefault := &version.Version{Channel: "wx", EnvVersion: "release", Version: "1.0.0", Url: "正式服默认地址", Default: true} releaseExact := &version.Version{Channel: "wx", EnvVersion: "release", Version: "1.0.1", Url: "正式服版本地址"} trialDefault := &version.Version{Channel: "wx", EnvVersion: "trial", Version: "1.0.0", Url: "体验服默认地址", Default: true} trialExact := &version.Version{Channel: "wx", EnvVersion: "trial", Version: "1.0.1", Url: "体验服版本地址"} for _, v := range []*version.Version{releaseDefault, releaseExact, trialDefault, trialExact} { channel.VList.Push(v) channel.VMap.Set(versionMapKey(v.Version, NormalizeEnvVersion(v.EnvVersion)), v) } versions.VChannels.Set("wx", channel) if got := versions.Check("1.0.1", "wx", "trial"); got != trialDefault { t.Fatalf("传入体验版环境版本时应优先返回体验版默认地址,实际返回 %#v", got) } if got := versions.Check("1.0.1", "wx", "release"); got != releaseDefault { t.Fatalf("传入正式服环境版本时应优先返回正式服默认地址,实际返回 %#v", got) } if got := versions.Check("1.0.1", "wx", ""); got != releaseExact { t.Fatalf("未传环境版本应返回正式服地址,实际返回 %#v", got) } if got := versions.Check("1.0.1", "wx", ""); got == nil || got.Version != "1.0.1" { t.Fatalf("未传环境版本时应优先按版本号返回任意环境版本,实际返回 %#v", got) } if got := versions.Check("9.9.9", "wx", "trial"); got != trialDefault { t.Fatalf("体验版未知版本应返回体验版默认地址,实际返回 %#v", got) } if got := versions.Check("9.9.9", "wx", "develop"); got != releaseDefault { t.Fatalf("开发版未知版本应返回正式服默认地址,实际返回 %#v", got) } } func TestVersionsCheckWithoutEnvVersionUsesVersionFirst(t *testing.T) { versions := VersionInit() channel := new(ChannelVersions) releaseDefault := &version.Version{Channel: "wx", EnvVersion: "release", Version: "1.0.0", Url: "正式服默认地址", Default: true} trialExact := &version.Version{Channel: "wx", EnvVersion: "trial", Version: "0.2.0", Url: "体验版版本地址"} for _, v := range []*version.Version{releaseDefault, trialExact} { channel.VList.Push(v) channel.VMap.Set(versionMapKey(v.Version, NormalizeEnvVersion(v.EnvVersion)), v) } versions.VChannels.Set("wx", channel) if got := versions.Check("0.2.0", "wx", ""); got != trialExact { t.Fatalf("未传环境版本时应按版本号命中体验版版本,实际返回 %#v", got) } if got := versions.Check("9.9.9", "wx", ""); got != releaseDefault { t.Fatalf("未传环境版本且版本号不存在时应返回正式服默认地址,实际返回 %#v", got) } } func TestVersionsCheckEnvVersionPriority(t *testing.T) { versions := VersionInit() channel := new(ChannelVersions) releaseDefault := &version.Version{Channel: "wx", EnvVersion: "release", Version: "1.0.0", Url: "正式服默认地址", Default: true} releaseExact := &version.Version{Channel: "wx", EnvVersion: "release", Version: "1.0.1", Url: "正式服版本地址"} trialDefault := &version.Version{Channel: "wx", EnvVersion: "trial", Version: "2.0.0", Url: "体验版默认地址", Default: true} trialExact := &version.Version{Channel: "wx", EnvVersion: "trial", Version: "1.0.1", Url: "体验版版本地址"} for _, v := range []*version.Version{releaseDefault, releaseExact, trialDefault, trialExact} { channel.VList.Push(v) channel.VMap.Set(versionMapKey(v.Version, NormalizeEnvVersion(v.EnvVersion)), v) } versions.VChannels.Set("wx", channel) if got := versions.Check("1.0.1", "wx", "release"); got != releaseDefault { t.Fatalf("传入正式服环境版本时应优先返回正式服默认地址,实际返回 %#v", got) } if got := versions.Check("1.0.1", "wx", "trial"); got != trialDefault { t.Fatalf("传入体验版环境版本时应优先返回体验版默认地址,实际返回 %#v", got) } } func TestVersionsCheckEnvVersionWithoutDefault(t *testing.T) { versions := VersionInit() channel := new(ChannelVersions) releaseExact := &version.Version{Channel: "wx", EnvVersion: "release", Version: "1.0.1", Url: "正式服版本地址"} trialExact := &version.Version{Channel: "wx", EnvVersion: "trial", Version: "1.0.1", Url: "体验版版本地址"} for _, v := range []*version.Version{releaseExact, trialExact} { channel.VList.Push(v) channel.VMap.Set(versionMapKey(v.Version, NormalizeEnvVersion(v.EnvVersion)), v) } versions.VChannels.Set("wx", channel) if got := versions.Check("1.0.1", "wx", "release"); got != releaseExact { t.Fatalf("正式服没有默认地址时应返回正式服版本地址,实际返回 %#v", got) } if got := versions.Check("1.0.1", "wx", "trial"); got != trialExact { t.Fatalf("体验版没有默认地址时应返回体验版版本地址,实际返回 %#v", got) } }