mirror of
https://codeberg.org/forgejo/forgejo
synced 2024-11-24 10:46:10 +01:00
539015403f
1. Allow leading and trailing spaces by user input, these spaces have already been trimmed at backend 2. Allow using dots in the topic
83 lines
2.5 KiB
Go
83 lines
2.5 KiB
Go
// 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"
|
|
)
|
|
|
|
func TestAddTopic(t *testing.T) {
|
|
totalNrOfTopics := 6
|
|
repo1NrOfTopics := 3
|
|
|
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
|
|
|
topics, _, err := repo_model.FindTopics(&repo_model.FindTopicOptions{})
|
|
assert.NoError(t, err)
|
|
assert.Len(t, topics, totalNrOfTopics)
|
|
|
|
topics, total, err := repo_model.FindTopics(&repo_model.FindTopicOptions{
|
|
ListOptions: db.ListOptions{Page: 1, PageSize: 2},
|
|
})
|
|
assert.NoError(t, err)
|
|
assert.Len(t, topics, 2)
|
|
assert.EqualValues(t, 6, total)
|
|
|
|
topics, _, err = repo_model.FindTopics(&repo_model.FindTopicOptions{
|
|
RepoID: 1,
|
|
})
|
|
assert.NoError(t, err)
|
|
assert.Len(t, topics, repo1NrOfTopics)
|
|
|
|
assert.NoError(t, repo_model.SaveTopics(2, "golang"))
|
|
repo2NrOfTopics := 1
|
|
topics, _, err = repo_model.FindTopics(&repo_model.FindTopicOptions{})
|
|
assert.NoError(t, err)
|
|
assert.Len(t, topics, totalNrOfTopics)
|
|
|
|
topics, _, err = repo_model.FindTopics(&repo_model.FindTopicOptions{
|
|
RepoID: 2,
|
|
})
|
|
assert.NoError(t, err)
|
|
assert.Len(t, topics, repo2NrOfTopics)
|
|
|
|
assert.NoError(t, repo_model.SaveTopics(2, "golang", "gitea"))
|
|
repo2NrOfTopics = 2
|
|
totalNrOfTopics++
|
|
topic, err := repo_model.GetTopicByName("gitea")
|
|
assert.NoError(t, err)
|
|
assert.EqualValues(t, 1, topic.RepoCount)
|
|
|
|
topics, _, err = repo_model.FindTopics(&repo_model.FindTopicOptions{})
|
|
assert.NoError(t, err)
|
|
assert.Len(t, topics, totalNrOfTopics)
|
|
|
|
topics, _, err = repo_model.FindTopics(&repo_model.FindTopicOptions{
|
|
RepoID: 2,
|
|
})
|
|
assert.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"))
|
|
}
|