2018-04-11 05:51:44 +03:00
// Copyright 2018 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2018-04-11 05:51:44 +03:00
2022-06-06 11:01:49 +03:00
package repo_test
2018-04-11 05:51:44 +03:00
import (
"testing"
2021-09-19 14:49:59 +03:00
"code.gitea.io/gitea/models/db"
2022-06-06 11:01:49 +03:00
repo_model "code.gitea.io/gitea/models/repo"
2021-11-12 17:36:47 +03:00
"code.gitea.io/gitea/models/unittest"
2021-11-17 15:34:35 +03:00
2018-04-11 05:51:44 +03:00
"github.com/stretchr/testify/assert"
2024-07-30 22:41:10 +03:00
"github.com/stretchr/testify/require"
2018-04-11 05:51:44 +03:00
)
func TestAddTopic ( t * testing . T ) {
2019-09-03 18:46:24 +03:00
totalNrOfTopics := 6
repo1NrOfTopics := 3
2024-07-30 22:41:10 +03:00
require . NoError ( t , unittest . PrepareTestDatabase ( ) )
2018-04-11 05:51:44 +03:00
2023-09-16 17:39:12 +03:00
topics , _ , err := repo_model . FindTopics ( db . DefaultContext , & repo_model . FindTopicOptions { } )
2024-07-30 22:41:10 +03:00
require . NoError ( t , err )
2021-06-07 08:27:09 +03:00
assert . Len ( t , topics , totalNrOfTopics )
2018-04-11 05:51:44 +03:00
2023-09-16 17:39:12 +03:00
topics , total , err := repo_model . FindTopics ( db . DefaultContext , & repo_model . FindTopicOptions {
2021-09-24 14:32:56 +03:00
ListOptions : db . ListOptions { Page : 1 , PageSize : 2 } ,
2018-04-11 05:51:44 +03:00
} )
2024-07-30 22:41:10 +03:00
require . NoError ( t , err )
2021-06-07 08:27:09 +03:00
assert . Len ( t , topics , 2 )
2021-08-12 15:43:08 +03:00
assert . EqualValues ( t , 6 , total )
2018-04-11 05:51:44 +03:00
2023-09-16 17:39:12 +03:00
topics , _ , err = repo_model . FindTopics ( db . DefaultContext , & repo_model . FindTopicOptions {
2018-04-11 05:51:44 +03:00
RepoID : 1 ,
} )
2024-07-30 22:41:10 +03:00
require . NoError ( t , err )
2021-06-07 08:27:09 +03:00
assert . Len ( t , topics , repo1NrOfTopics )
2018-04-11 05:51:44 +03:00
2024-07-30 22:41:10 +03:00
require . NoError ( t , repo_model . SaveTopics ( db . DefaultContext , 2 , "golang" ) )
2021-11-18 04:33:06 +03:00
repo2NrOfTopics := 1
2023-09-16 17:39:12 +03:00
topics , _ , err = repo_model . FindTopics ( db . DefaultContext , & repo_model . FindTopicOptions { } )
2024-07-30 22:41:10 +03:00
require . NoError ( t , err )
2021-06-07 08:27:09 +03:00
assert . Len ( t , topics , totalNrOfTopics )
2018-04-11 05:51:44 +03:00
2023-09-16 17:39:12 +03:00
topics , _ , err = repo_model . FindTopics ( db . DefaultContext , & repo_model . FindTopicOptions {
2018-04-11 05:51:44 +03:00
RepoID : 2 ,
} )
2024-07-30 22:41:10 +03:00
require . NoError ( t , err )
2021-06-07 08:27:09 +03:00
assert . Len ( t , topics , repo2NrOfTopics )
2018-04-11 05:51:44 +03:00
2024-07-30 22:41:10 +03:00
require . NoError ( t , repo_model . SaveTopics ( db . DefaultContext , 2 , "golang" , "gitea" ) )
2019-09-03 18:46:24 +03:00
repo2NrOfTopics = 2
totalNrOfTopics ++
2023-09-16 17:39:12 +03:00
topic , err := repo_model . GetTopicByName ( db . DefaultContext , "gitea" )
2024-07-30 22:41:10 +03:00
require . NoError ( t , err )
2018-04-11 05:51:44 +03:00
assert . EqualValues ( t , 1 , topic . RepoCount )
2023-09-16 17:39:12 +03:00
topics , _ , err = repo_model . FindTopics ( db . DefaultContext , & repo_model . FindTopicOptions { } )
2024-07-30 22:41:10 +03:00
require . NoError ( t , err )
2021-06-07 08:27:09 +03:00
assert . Len ( t , topics , totalNrOfTopics )
2018-04-11 05:51:44 +03:00
2023-09-16 17:39:12 +03:00
topics , _ , err = repo_model . FindTopics ( db . DefaultContext , & repo_model . FindTopicOptions {
2018-04-11 05:51:44 +03:00
RepoID : 2 ,
} )
2024-07-30 22:41:10 +03:00
require . NoError ( t , err )
2021-06-07 08:27:09 +03:00
assert . Len ( t , topics , repo2NrOfTopics )
2018-04-11 05:51:44 +03:00
}
2018-06-21 12:09:46 +03:00
func TestTopicValidator ( t * testing . T ) {
2022-06-06 11:01:49 +03:00
assert . True ( t , repo_model . ValidateTopic ( "12345" ) )
assert . True ( t , repo_model . ValidateTopic ( "2-test" ) )
2023-08-03 12:18:06 +03:00
assert . True ( t , repo_model . ValidateTopic ( "foo.bar" ) )
2022-06-06 11:01:49 +03:00
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" ) )
2023-08-03 12:18:06 +03:00
assert . False ( t , repo_model . ValidateTopic ( ".foo" ) )
2018-06-21 12:09:46 +03:00
}