tag_test.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. // Copyright 2020 The Gogs Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package gitutil
  5. import (
  6. "testing"
  7. "github.com/gogs/git-module"
  8. "github.com/stretchr/testify/assert"
  9. )
  10. func TestModuler_ListTagsAfter(t *testing.T) {
  11. mockModule := &MockModuleStore{
  12. repoTags: func(string, ...git.TagsOptions) ([]string, error) {
  13. return []string{
  14. "v2.3.0", "v2.2.1", "v2.1.0",
  15. "v1.3.0", "v1.2.0", "v1.1.0",
  16. "v0.8.0", "v0.5.0", "v0.1.0",
  17. }, nil
  18. },
  19. listTagsAfter: Module.ListTagsAfter,
  20. }
  21. beforeModule := Module
  22. Module = mockModule
  23. t.Cleanup(func() {
  24. Module = beforeModule
  25. })
  26. tests := []struct {
  27. name string
  28. after string
  29. expTagsPage *TagsPage
  30. }{
  31. {
  32. name: "first page",
  33. expTagsPage: &TagsPage{
  34. Tags: []string{
  35. "v2.3.0", "v2.2.1", "v2.1.0",
  36. },
  37. HasLatest: true,
  38. HasNext: true,
  39. },
  40. },
  41. {
  42. name: "second page",
  43. after: "v2.1.0",
  44. expTagsPage: &TagsPage{
  45. Tags: []string{
  46. "v1.3.0", "v1.2.0", "v1.1.0",
  47. },
  48. HasLatest: false,
  49. HasNext: true,
  50. },
  51. },
  52. {
  53. name: "last page",
  54. after: "v1.1.0",
  55. expTagsPage: &TagsPage{
  56. Tags: []string{
  57. "v0.8.0", "v0.5.0", "v0.1.0",
  58. },
  59. HasLatest: false,
  60. PreviousAfter: "v2.1.0",
  61. HasNext: false,
  62. },
  63. },
  64. {
  65. name: "arbitrary after",
  66. after: "v1.2.0",
  67. expTagsPage: &TagsPage{
  68. Tags: []string{
  69. "v1.1.0", "v0.8.0", "v0.5.0",
  70. },
  71. HasLatest: false,
  72. PreviousAfter: "v2.2.1",
  73. HasNext: true,
  74. },
  75. },
  76. {
  77. name: "after the oldest one",
  78. after: "v0.1.0",
  79. expTagsPage: &TagsPage{
  80. Tags: []string{},
  81. HasLatest: false,
  82. PreviousAfter: "v1.1.0",
  83. HasNext: false,
  84. },
  85. },
  86. {
  87. name: "after does not exist",
  88. after: "v2.2.9",
  89. expTagsPage: &TagsPage{
  90. Tags: []string{
  91. "v2.3.0", "v2.2.1", "v2.1.0",
  92. },
  93. HasLatest: true,
  94. HasNext: true,
  95. },
  96. },
  97. }
  98. for _, test := range tests {
  99. t.Run(test.name, func(t *testing.T) {
  100. tagsPage, err := Module.ListTagsAfter("", test.after, 3)
  101. if err != nil {
  102. t.Fatal(err)
  103. }
  104. assert.Equal(t, test.expTagsPage, tagsPage)
  105. })
  106. }
  107. }