summaryrefslogtreecommitdiffstats
path: root/models/repo/topic_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'models/repo/topic_test.go')
-rw-r--r--models/repo/topic_test.go83
1 files changed, 83 insertions, 0 deletions
diff --git a/models/repo/topic_test.go b/models/repo/topic_test.go
new file mode 100644
index 00000000..45cee524
--- /dev/null
+++ b/models/repo/topic_test.go
@@ -0,0 +1,83 @@
+// Copyright 2018 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package repo_test
+
+import (
+ "testing"
+
+ "code.gitea.io/gitea/models/db"
+ repo_model "code.gitea.io/gitea/models/repo"
+ "code.gitea.io/gitea/models/unittest"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+)
+
+func TestAddTopic(t *testing.T) {
+ totalNrOfTopics := 6
+ repo1NrOfTopics := 3
+
+ require.NoError(t, unittest.PrepareTestDatabase())
+
+ topics, _, err := repo_model.FindTopics(db.DefaultContext, &repo_model.FindTopicOptions{})
+ require.NoError(t, err)
+ assert.Len(t, topics, totalNrOfTopics)
+
+ topics, total, err := repo_model.FindTopics(db.DefaultContext, &repo_model.FindTopicOptions{
+ ListOptions: db.ListOptions{Page: 1, PageSize: 2},
+ })
+ require.NoError(t, err)
+ assert.Len(t, topics, 2)
+ assert.EqualValues(t, 6, total)
+
+ topics, _, err = repo_model.FindTopics(db.DefaultContext, &repo_model.FindTopicOptions{
+ RepoID: 1,
+ })
+ require.NoError(t, err)
+ assert.Len(t, topics, repo1NrOfTopics)
+
+ require.NoError(t, repo_model.SaveTopics(db.DefaultContext, 2, "golang"))
+ repo2NrOfTopics := 1
+ topics, _, err = repo_model.FindTopics(db.DefaultContext, &repo_model.FindTopicOptions{})
+ require.NoError(t, err)
+ assert.Len(t, topics, totalNrOfTopics)
+
+ topics, _, err = repo_model.FindTopics(db.DefaultContext, &repo_model.FindTopicOptions{
+ RepoID: 2,
+ })
+ require.NoError(t, err)
+ assert.Len(t, topics, repo2NrOfTopics)
+
+ require.NoError(t, repo_model.SaveTopics(db.DefaultContext, 2, "golang", "gitea"))
+ repo2NrOfTopics = 2
+ totalNrOfTopics++
+ topic, err := repo_model.GetTopicByName(db.DefaultContext, "gitea")
+ require.NoError(t, err)
+ assert.EqualValues(t, 1, topic.RepoCount)
+
+ topics, _, err = repo_model.FindTopics(db.DefaultContext, &repo_model.FindTopicOptions{})
+ require.NoError(t, err)
+ assert.Len(t, topics, totalNrOfTopics)
+
+ topics, _, err = repo_model.FindTopics(db.DefaultContext, &repo_model.FindTopicOptions{
+ RepoID: 2,
+ })
+ require.NoError(t, err)
+ assert.Len(t, topics, repo2NrOfTopics)
+}
+
+func TestTopicValidator(t *testing.T) {
+ assert.True(t, repo_model.ValidateTopic("12345"))
+ assert.True(t, repo_model.ValidateTopic("2-test"))
+ assert.True(t, repo_model.ValidateTopic("foo.bar"))
+ assert.True(t, repo_model.ValidateTopic("test-3"))
+ assert.True(t, repo_model.ValidateTopic("first"))
+ assert.True(t, repo_model.ValidateTopic("second-test-topic"))
+ assert.True(t, repo_model.ValidateTopic("third-project-topic-with-max-length"))
+
+ assert.False(t, repo_model.ValidateTopic("$fourth-test,topic"))
+ assert.False(t, repo_model.ValidateTopic("-fifth-test-topic"))
+ assert.False(t, repo_model.ValidateTopic("sixth-go-project-topic-with-excess-length"))
+ assert.False(t, repo_model.ValidateTopic(".foo"))
+}