2017-02-17 11:02:11 +03:00
// Copyright 2017 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2017-02-17 11:02:11 +03:00
2022-06-06 11:01:49 +03:00
package repo_test
2017-02-17 11:02:11 +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"
2024-03-04 11:16:03 +03:00
user_model "code.gitea.io/gitea/models/user"
2019-11-10 12:22:19 +03:00
"code.gitea.io/gitea/modules/setting"
2017-02-17 11:02:11 +03:00
"github.com/stretchr/testify/assert"
)
func TestIsWatching ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2017-02-17 11:02:11 +03:00
2023-09-15 09:13:19 +03:00
assert . True ( t , repo_model . IsWatching ( db . DefaultContext , 1 , 1 ) )
assert . True ( t , repo_model . IsWatching ( db . DefaultContext , 4 , 1 ) )
assert . True ( t , repo_model . IsWatching ( db . DefaultContext , 11 , 1 ) )
2017-02-17 11:02:11 +03:00
2023-09-15 09:13:19 +03:00
assert . False ( t , repo_model . IsWatching ( db . DefaultContext , 1 , 5 ) )
assert . False ( t , repo_model . IsWatching ( db . DefaultContext , 8 , 1 ) )
assert . False ( t , repo_model . IsWatching ( db . DefaultContext , unittest . NonexistentID , unittest . NonexistentID ) )
2017-02-17 11:02:11 +03:00
}
func TestGetWatchers ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2017-02-17 11:02:11 +03:00
2022-08-16 05:22:25 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : 1 } )
2022-06-06 11:01:49 +03:00
watches , err := repo_model . GetWatchers ( db . DefaultContext , repo . ID )
2017-02-17 11:02:11 +03:00
assert . NoError ( t , err )
2017-10-24 20:36:19 +03:00
// One watchers are inactive, thus minus 1
assert . Len ( t , watches , repo . NumWatches - 1 )
2017-02-17 11:02:11 +03:00
for _ , watch := range watches {
assert . EqualValues ( t , repo . ID , watch . RepoID )
}
2022-06-06 11:01:49 +03:00
watches , err = repo_model . GetWatchers ( db . DefaultContext , unittest . NonexistentID )
2017-02-17 11:02:11 +03:00
assert . NoError ( t , err )
assert . Len ( t , watches , 0 )
}
func TestRepository_GetWatchers ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2017-02-17 11:02:11 +03:00
2022-08-16 05:22:25 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : 1 } )
2023-09-15 09:13:19 +03:00
watchers , err := repo_model . GetRepoWatchers ( db . DefaultContext , repo . ID , db . ListOptions { Page : 1 } )
2017-02-17 11:02:11 +03:00
assert . NoError ( t , err )
assert . Len ( t , watchers , repo . NumWatches )
for _ , watcher := range watchers {
2022-06-06 11:01:49 +03:00
unittest . AssertExistsAndLoadBean ( t , & repo_model . Watch { UserID : watcher . ID , RepoID : repo . ID } )
2017-02-17 11:02:11 +03:00
}
2022-08-16 05:22:25 +03:00
repo = unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : 9 } )
2023-09-15 09:13:19 +03:00
watchers , err = repo_model . GetRepoWatchers ( db . DefaultContext , repo . ID , db . ListOptions { Page : 1 } )
2017-02-17 11:02:11 +03:00
assert . NoError ( t , err )
assert . Len ( t , watchers , 0 )
}
2019-11-10 12:22:19 +03:00
func TestWatchIfAuto ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2019-11-10 12:22:19 +03:00
2022-08-16 05:22:25 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : 1 } )
2024-03-04 11:16:03 +03:00
user12 := unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : 12 } )
2023-09-15 09:13:19 +03:00
watchers , err := repo_model . GetRepoWatchers ( db . DefaultContext , repo . ID , db . ListOptions { Page : 1 } )
2019-11-10 12:22:19 +03:00
assert . NoError ( t , err )
assert . Len ( t , watchers , repo . NumWatches )
setting . Service . AutoWatchOnChanges = false
prevCount := repo . NumWatches
// Must not add watch
2022-06-06 11:01:49 +03:00
assert . NoError ( t , repo_model . WatchIfAuto ( db . DefaultContext , 8 , 1 , true ) )
2023-09-15 09:13:19 +03:00
watchers , err = repo_model . GetRepoWatchers ( db . DefaultContext , repo . ID , db . ListOptions { Page : 1 } )
2019-11-10 12:22:19 +03:00
assert . NoError ( t , err )
assert . Len ( t , watchers , prevCount )
// Should not add watch
2022-06-06 11:01:49 +03:00
assert . NoError ( t , repo_model . WatchIfAuto ( db . DefaultContext , 10 , 1 , true ) )
2023-09-15 09:13:19 +03:00
watchers , err = repo_model . GetRepoWatchers ( db . DefaultContext , repo . ID , db . ListOptions { Page : 1 } )
2019-11-10 12:22:19 +03:00
assert . NoError ( t , err )
assert . Len ( t , watchers , prevCount )
setting . Service . AutoWatchOnChanges = true
// Must not add watch
2022-06-06 11:01:49 +03:00
assert . NoError ( t , repo_model . WatchIfAuto ( db . DefaultContext , 8 , 1 , true ) )
2023-09-15 09:13:19 +03:00
watchers , err = repo_model . GetRepoWatchers ( db . DefaultContext , repo . ID , db . ListOptions { Page : 1 } )
2019-11-10 12:22:19 +03:00
assert . NoError ( t , err )
assert . Len ( t , watchers , prevCount )
// Should not add watch
2022-06-06 11:01:49 +03:00
assert . NoError ( t , repo_model . WatchIfAuto ( db . DefaultContext , 12 , 1 , false ) )
2023-09-15 09:13:19 +03:00
watchers , err = repo_model . GetRepoWatchers ( db . DefaultContext , repo . ID , db . ListOptions { Page : 1 } )
2019-11-10 12:22:19 +03:00
assert . NoError ( t , err )
assert . Len ( t , watchers , prevCount )
// Should add watch
2022-06-06 11:01:49 +03:00
assert . NoError ( t , repo_model . WatchIfAuto ( db . DefaultContext , 12 , 1 , true ) )
2023-09-15 09:13:19 +03:00
watchers , err = repo_model . GetRepoWatchers ( db . DefaultContext , repo . ID , db . ListOptions { Page : 1 } )
2019-11-10 12:22:19 +03:00
assert . NoError ( t , err )
assert . Len ( t , watchers , prevCount + 1 )
// Should remove watch, inhibit from adding auto
2024-03-04 11:16:03 +03:00
assert . NoError ( t , repo_model . WatchRepo ( db . DefaultContext , user12 , repo , false ) )
2023-09-15 09:13:19 +03:00
watchers , err = repo_model . GetRepoWatchers ( db . DefaultContext , repo . ID , db . ListOptions { Page : 1 } )
2019-11-10 12:22:19 +03:00
assert . NoError ( t , err )
assert . Len ( t , watchers , prevCount )
// Must not add watch
2022-06-06 11:01:49 +03:00
assert . NoError ( t , repo_model . WatchIfAuto ( db . DefaultContext , 12 , 1 , true ) )
2023-09-15 09:13:19 +03:00
watchers , err = repo_model . GetRepoWatchers ( db . DefaultContext , repo . ID , db . ListOptions { Page : 1 } )
2019-11-10 12:22:19 +03:00
assert . NoError ( t , err )
assert . Len ( t , watchers , prevCount )
}