aboutsummaryrefslogtreecommitdiff
path: root/internal/gitutil/tag_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/gitutil/tag_test.go')
-rw-r--r--internal/gitutil/tag_test.go109
1 files changed, 109 insertions, 0 deletions
diff --git a/internal/gitutil/tag_test.go b/internal/gitutil/tag_test.go
new file mode 100644
index 00000000..732eced6
--- /dev/null
+++ b/internal/gitutil/tag_test.go
@@ -0,0 +1,109 @@
+// Copyright 2020 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package gitutil
+
+import (
+ "testing"
+
+ "github.com/gogs/git-module"
+ "github.com/stretchr/testify/assert"
+)
+
+func TestModuler_ListTagsAfter(t *testing.T) {
+ MockModule.RepoTags = func(string, ...git.TagsOptions) ([]string, error) {
+ return []string{
+ "v2.3.0", "v2.2.1", "v2.1.0",
+ "v1.3.0", "v1.2.0", "v1.1.0",
+ "v0.8.0", "v0.5.0", "v0.1.0",
+ }, nil
+ }
+ defer func() {
+ MockModule = MockModuleStore{}
+ }()
+
+ tests := []struct {
+ name string
+ after string
+ expTagsPage *TagsPage
+ }{
+ {
+ name: "first page",
+ expTagsPage: &TagsPage{
+ Tags: []string{
+ "v2.3.0", "v2.2.1", "v2.1.0",
+ },
+ HasLatest: true,
+ HasNext: true,
+ },
+ },
+ {
+ name: "second page",
+ after: "v2.1.0",
+ expTagsPage: &TagsPage{
+ Tags: []string{
+ "v1.3.0", "v1.2.0", "v1.1.0",
+ },
+ HasLatest: false,
+ HasNext: true,
+ },
+ },
+ {
+ name: "last page",
+ after: "v1.1.0",
+ expTagsPage: &TagsPage{
+ Tags: []string{
+ "v0.8.0", "v0.5.0", "v0.1.0",
+ },
+ HasLatest: false,
+ PreviousAfter: "v2.1.0",
+ HasNext: false,
+ },
+ },
+
+ {
+ name: "arbitrary after",
+ after: "v1.2.0",
+ expTagsPage: &TagsPage{
+ Tags: []string{
+ "v1.1.0", "v0.8.0", "v0.5.0",
+ },
+ HasLatest: false,
+ PreviousAfter: "v2.2.1",
+ HasNext: true,
+ },
+ },
+ {
+ name: "after the oldest one",
+ after: "v0.1.0",
+ expTagsPage: &TagsPage{
+ Tags: []string{},
+ HasLatest: false,
+ PreviousAfter: "v1.1.0",
+ HasNext: false,
+ },
+ },
+ {
+ name: "after does not exist",
+ after: "v2.2.9",
+ expTagsPage: &TagsPage{
+ Tags: []string{
+ "v2.3.0", "v2.2.1", "v2.1.0",
+ },
+ HasLatest: true,
+ HasNext: true,
+ },
+ },
+ }
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ tagsPage, err := Module.ListTagsAfter("", test.after, 3)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ assert.Equal(t, test.expTagsPage, tagsPage)
+ })
+ }
+}