version_test.go 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. package task
  2. import (
  3. "dsbqj-admin/model/mongo/version"
  4. "testing"
  5. )
  6. func TestVersionsCheckEnvVersionAndDefault(t *testing.T) {
  7. versions := VersionInit()
  8. channel := new(ChannelVersions)
  9. releaseDefault := &version.Version{Channel: "wx", EnvVersion: "release", Version: "1.0.0", Url: "正式服默认地址", Default: true}
  10. releaseExact := &version.Version{Channel: "wx", EnvVersion: "release", Version: "1.0.1", Url: "正式服版本地址"}
  11. trialDefault := &version.Version{Channel: "wx", EnvVersion: "trial", Version: "1.0.0", Url: "体验服默认地址", Default: true}
  12. trialExact := &version.Version{Channel: "wx", EnvVersion: "trial", Version: "1.0.1", Url: "体验服版本地址"}
  13. for _, v := range []*version.Version{releaseDefault, releaseExact, trialDefault, trialExact} {
  14. channel.VList.Push(v)
  15. channel.VMap.Set(versionMapKey(v.Version, NormalizeEnvVersion(v.EnvVersion)), v)
  16. }
  17. versions.VChannels.Set("wx", channel)
  18. if got := versions.Check("1.0.1", "wx", "trial"); got != trialDefault {
  19. t.Fatalf("传入体验版环境版本时应优先返回体验版默认地址,实际返回 %#v", got)
  20. }
  21. if got := versions.Check("1.0.1", "wx", "release"); got != releaseDefault {
  22. t.Fatalf("传入正式服环境版本时应优先返回正式服默认地址,实际返回 %#v", got)
  23. }
  24. if got := versions.Check("1.0.1", "wx", ""); got != releaseExact {
  25. t.Fatalf("未传环境版本应返回正式服地址,实际返回 %#v", got)
  26. }
  27. if got := versions.Check("1.0.1", "wx", ""); got == nil || got.Version != "1.0.1" {
  28. t.Fatalf("未传环境版本时应优先按版本号返回任意环境版本,实际返回 %#v", got)
  29. }
  30. if got := versions.Check("9.9.9", "wx", "trial"); got != trialDefault {
  31. t.Fatalf("体验版未知版本应返回体验版默认地址,实际返回 %#v", got)
  32. }
  33. if got := versions.Check("9.9.9", "wx", "develop"); got != releaseDefault {
  34. t.Fatalf("开发版未知版本应返回正式服默认地址,实际返回 %#v", got)
  35. }
  36. }
  37. func TestVersionsCheckWithoutEnvVersionUsesVersionFirst(t *testing.T) {
  38. versions := VersionInit()
  39. channel := new(ChannelVersions)
  40. releaseDefault := &version.Version{Channel: "wx", EnvVersion: "release", Version: "1.0.0", Url: "正式服默认地址", Default: true}
  41. trialExact := &version.Version{Channel: "wx", EnvVersion: "trial", Version: "0.2.0", Url: "体验版版本地址"}
  42. for _, v := range []*version.Version{releaseDefault, trialExact} {
  43. channel.VList.Push(v)
  44. channel.VMap.Set(versionMapKey(v.Version, NormalizeEnvVersion(v.EnvVersion)), v)
  45. }
  46. versions.VChannels.Set("wx", channel)
  47. if got := versions.Check("0.2.0", "wx", ""); got != trialExact {
  48. t.Fatalf("未传环境版本时应按版本号命中体验版版本,实际返回 %#v", got)
  49. }
  50. if got := versions.Check("9.9.9", "wx", ""); got != releaseDefault {
  51. t.Fatalf("未传环境版本且版本号不存在时应返回正式服默认地址,实际返回 %#v", got)
  52. }
  53. }
  54. func TestVersionsCheckEnvVersionPriority(t *testing.T) {
  55. versions := VersionInit()
  56. channel := new(ChannelVersions)
  57. releaseDefault := &version.Version{Channel: "wx", EnvVersion: "release", Version: "1.0.0", Url: "正式服默认地址", Default: true}
  58. releaseExact := &version.Version{Channel: "wx", EnvVersion: "release", Version: "1.0.1", Url: "正式服版本地址"}
  59. trialDefault := &version.Version{Channel: "wx", EnvVersion: "trial", Version: "2.0.0", Url: "体验版默认地址", Default: true}
  60. trialExact := &version.Version{Channel: "wx", EnvVersion: "trial", Version: "1.0.1", Url: "体验版版本地址"}
  61. for _, v := range []*version.Version{releaseDefault, releaseExact, trialDefault, trialExact} {
  62. channel.VList.Push(v)
  63. channel.VMap.Set(versionMapKey(v.Version, NormalizeEnvVersion(v.EnvVersion)), v)
  64. }
  65. versions.VChannels.Set("wx", channel)
  66. if got := versions.Check("1.0.1", "wx", "release"); got != releaseDefault {
  67. t.Fatalf("传入正式服环境版本时应优先返回正式服默认地址,实际返回 %#v", got)
  68. }
  69. if got := versions.Check("1.0.1", "wx", "trial"); got != trialDefault {
  70. t.Fatalf("传入体验版环境版本时应优先返回体验版默认地址,实际返回 %#v", got)
  71. }
  72. }
  73. func TestVersionsCheckEnvVersionWithoutDefault(t *testing.T) {
  74. versions := VersionInit()
  75. channel := new(ChannelVersions)
  76. releaseExact := &version.Version{Channel: "wx", EnvVersion: "release", Version: "1.0.1", Url: "正式服版本地址"}
  77. trialExact := &version.Version{Channel: "wx", EnvVersion: "trial", Version: "1.0.1", Url: "体验版版本地址"}
  78. for _, v := range []*version.Version{releaseExact, trialExact} {
  79. channel.VList.Push(v)
  80. channel.VMap.Set(versionMapKey(v.Version, NormalizeEnvVersion(v.EnvVersion)), v)
  81. }
  82. versions.VChannels.Set("wx", channel)
  83. if got := versions.Check("1.0.1", "wx", "release"); got != releaseExact {
  84. t.Fatalf("正式服没有默认地址时应返回正式服版本地址,实际返回 %#v", got)
  85. }
  86. if got := versions.Check("1.0.1", "wx", "trial"); got != trialExact {
  87. t.Fatalf("体验版没有默认地址时应返回体验版版本地址,实际返回 %#v", got)
  88. }
  89. }