| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- package task
- import (
- "dsbqj-admin/model/mongo/version"
- "testing"
- )
- func TestVersionsCheckEnvVersionAndDefault(t *testing.T) {
- versions := VersionInit()
- platform := new(PlatformVersions)
- releaseDefault := &version.Version{Platform: "wx", EnvVersion: "release", Version: "1.0.0", Url: "正式服默认地址", Default: true}
- releaseExact := &version.Version{Platform: "wx", EnvVersion: "release", Version: "1.0.1", Url: "正式服版本地址"}
- trialDefault := &version.Version{Platform: "wx", EnvVersion: "trial", Version: "1.0.0", Url: "体验服默认地址", Default: true}
- trialExact := &version.Version{Platform: "wx", EnvVersion: "trial", Version: "1.0.1", Url: "体验服版本地址"}
- for _, v := range []*version.Version{releaseDefault, releaseExact, trialDefault, trialExact} {
- platform.VList.Push(v)
- platform.VMap.Set(versionMapKey(v.Version, NormalizeEnvVersion(v.EnvVersion)), v)
- }
- versions.VPlatforms.Set("wx", platform)
- if got := versions.Check("1.0.1", "wx", "trial"); got != trialExact {
- t.Fatalf("传入版本号和体验版环境时应精确匹配体验版版本,实际返回 %#v", got)
- }
- if got := versions.Check("1.0.1", "wx", "release"); got != releaseExact {
- 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 != releaseDefault {
- 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()
- platform := new(PlatformVersions)
- releaseDefault := &version.Version{Platform: "wx", EnvVersion: "release", Version: "1.0.0", Url: "正式服默认地址", Default: true}
- trialExact := &version.Version{Platform: "wx", EnvVersion: "trial", Version: "0.2.0", Url: "体验版版本地址"}
- for _, v := range []*version.Version{releaseDefault, trialExact} {
- platform.VList.Push(v)
- platform.VMap.Set(versionMapKey(v.Version, NormalizeEnvVersion(v.EnvVersion)), v)
- }
- versions.VPlatforms.Set("wx", platform)
- 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 TestVersionsCheckVersionConditionOverridesDefault(t *testing.T) {
- versions := VersionInit()
- platform := new(PlatformVersions)
- releaseDefault := &version.Version{Platform: "wx", EnvVersion: "release", Version: "1.0.0", Url: "正式服默认地址", Default: true}
- releaseExact := &version.Version{Platform: "wx", EnvVersion: "release", Version: "1.0.1", Url: "正式服版本地址"}
- trialDefault := &version.Version{Platform: "wx", EnvVersion: "trial", Version: "2.0.0", Url: "体验版默认地址", Default: true}
- trialExact := &version.Version{Platform: "wx", EnvVersion: "trial", Version: "1.0.1", Url: "体验版版本地址"}
- for _, v := range []*version.Version{releaseDefault, releaseExact, trialDefault, trialExact} {
- platform.VList.Push(v)
- platform.VMap.Set(versionMapKey(v.Version, NormalizeEnvVersion(v.EnvVersion)), v)
- }
- versions.VPlatforms.Set("wx", platform)
- 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)
- }
- if got := versions.Check("", "wx", "release"); got != releaseDefault {
- t.Fatalf("不传版本号时应返回正式服默认版本,实际返回 %#v", got)
- }
- if got := versions.Check("", "wx", "trial"); got != trialDefault {
- t.Fatalf("不传版本号时应返回体验版默认版本,实际返回 %#v", got)
- }
- }
- func TestVersionsCheckEnvVersionWithoutDefault(t *testing.T) {
- versions := VersionInit()
- platform := new(PlatformVersions)
- releaseExact := &version.Version{Platform: "wx", EnvVersion: "release", Version: "1.0.1", Url: "正式服版本地址"}
- trialExact := &version.Version{Platform: "wx", EnvVersion: "trial", Version: "1.0.1", Url: "体验版版本地址"}
- for _, v := range []*version.Version{releaseExact, trialExact} {
- platform.VList.Push(v)
- platform.VMap.Set(versionMapKey(v.Version, NormalizeEnvVersion(v.EnvVersion)), v)
- }
- versions.VPlatforms.Set("wx", platform)
- 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)
- }
- }
- func TestVersionsCheckFallsBackToLegacyRecords(t *testing.T) {
- versions := VersionInit()
- legacy := new(PlatformVersions)
- record := &version.Version{Channel: "bb", Version: "1.0.0", EnvVersion: "release", Url: "历史地址"}
- legacy.VList.Push(record)
- legacy.VMap.Set(versionMapKey(record.Version, NormalizeEnvVersion(record.EnvVersion)), record)
- versions.VPlatforms.Set("", legacy)
- if got := versions.Check("1.0.0", "wx", ""); got != record {
- t.Fatalf("平台记录不存在时应兼容读取历史空平台记录,实际返回 %#v", got)
- }
- }
- func TestVersionsCheckWithoutVersionUsesEnvironmentDefault(t *testing.T) {
- versions := VersionInit()
- platform := new(PlatformVersions)
- releaseDefault := &version.Version{Platform: "wx", EnvVersion: "release", Version: "1.0.0", Default: true}
- trialDefault := &version.Version{Platform: "wx", EnvVersion: "trial", Version: "1.0.1", Default: true}
- otherPlatformDefault := &version.Version{Platform: "dy", EnvVersion: "trial", Version: "9.9.9", Default: true}
- platform.VList.Push(releaseDefault)
- platform.VList.Push(trialDefault)
- versions.VPlatforms.Set("wx", platform)
- other := new(PlatformVersions)
- other.VList.Push(otherPlatformDefault)
- versions.VPlatforms.Set("dy", other)
- if got := versions.Check("", "wx", "trial"); got != trialDefault {
- t.Fatalf("empty version should use the trial default for the requested platform: %#v", got)
- }
- if got := versions.Check("", "wx", "release"); got != releaseDefault {
- t.Fatalf("empty version should use the release default for the requested platform: %#v", got)
- }
- if got := versions.Check("", "wx", ""); got != releaseDefault {
- t.Fatalf("empty version and environment should use the release default: %#v", got)
- }
- if got := versions.Check("", "dy", "trial"); got != otherPlatformDefault {
- t.Fatalf("empty version should not cross platform boundaries: %#v", got)
- }
- }
- func TestVersionsCheckWithoutVersionFallsBackToLatestEnvironmentVersion(t *testing.T) {
- versions := VersionInit()
- platform := new(PlatformVersions)
- releaseOld := &version.Version{Platform: "wx", EnvVersion: "release", Version: "1.0.2"}
- releaseLatest := &version.Version{Platform: "wx", EnvVersion: "release", Version: "1.0.10"}
- trial := &version.Version{Platform: "wx", EnvVersion: "trial", Version: "2.0.0"}
- for _, item := range []*version.Version{releaseOld, trial, releaseLatest} {
- platform.VList.Push(item)
- }
- versions.VPlatforms.Set("wx", platform)
- if got := versions.Check("", "wx", ""); got != releaseLatest {
- t.Fatalf("空版本号和环境应返回最新正式服版本,实际返回 %#v", got)
- }
- if got := versions.Check("", "wx", "trial"); got != trial {
- t.Fatalf("空版本号应只在指定环境内选择,实际返回 %#v", got)
- }
- if got := versions.Check("9.9.9", "wx", "trial"); got != releaseLatest {
- t.Fatalf("指定版本和环境均未命中应返回最新正式服版本,实际返回 %#v", got)
- }
- if got := versions.Check("", "dy", ""); got != nil {
- t.Fatalf("不应跨平台返回版本,实际返回 %#v", got)
- }
- releaseOld.Default = true
- if got := versions.Check("", "wx", ""); got != releaseOld {
- t.Fatalf("正式服默认标记应优先于最新版本,实际返回 %#v", got)
- }
- }
- func TestVersionsCheckTrialMissFallsBackToMatchingReleaseVersion(t *testing.T) {
- versions := VersionInit()
- platform := new(PlatformVersions)
- releaseDefault := &version.Version{Platform: "wx", EnvVersion: "release", Version: "1.0.0", Default: true}
- releaseExact := &version.Version{Platform: "wx", EnvVersion: "release", Version: "1.0.1"}
- for _, item := range []*version.Version{releaseDefault, releaseExact} {
- platform.VList.Push(item)
- platform.VMap.Set(versionMapKey(item.Version, releaseEnvVersion), item)
- }
- versions.VPlatforms.Set("wx", platform)
- if got := versions.Check("1.0.1", "wx", "trial"); got != releaseExact {
- t.Fatalf("体验服环境未命中时应优先返回同版本正式服配置,实际返回 %#v", got)
- }
- if got := versions.Check("9.9.9", "wx", "trial"); got != releaseDefault {
- t.Fatalf("版本号未命中时应返回正式服默认配置,实际返回 %#v", got)
- }
- }
|