tag_test.go 2.0 KB

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