2017-02-17 11:02:11 +03:00
// Copyright 2017 The Gitea 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 models
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestIsWatching ( t * testing . T ) {
assert . NoError ( t , PrepareTestDatabase ( ) )
assert . True ( t , IsWatching ( 1 , 1 ) )
assert . True ( t , IsWatching ( 4 , 1 ) )
assert . False ( t , IsWatching ( 1 , 5 ) )
assert . False ( t , IsWatching ( NonexistentID , NonexistentID ) )
}
func TestWatchRepo ( t * testing . T ) {
assert . NoError ( t , PrepareTestDatabase ( ) )
const repoID = 3
const userID = 2
assert . NoError ( t , WatchRepo ( userID , repoID , true ) )
AssertExistsAndLoadBean ( t , & Watch { RepoID : repoID , UserID : userID } )
CheckConsistencyFor ( t , & Repository { ID : repoID } )
assert . NoError ( t , WatchRepo ( userID , repoID , false ) )
AssertNotExistsBean ( t , & Watch { RepoID : repoID , UserID : userID } )
CheckConsistencyFor ( t , & Repository { ID : repoID } )
}
func TestGetWatchers ( t * testing . T ) {
assert . NoError ( t , PrepareTestDatabase ( ) )
repo := AssertExistsAndLoadBean ( t , & Repository { ID : 1 } ) . ( * Repository )
watches , err := GetWatchers ( repo . ID )
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 )
}
watches , err = GetWatchers ( NonexistentID )
assert . NoError ( t , err )
assert . Len ( t , watches , 0 )
}
func TestRepository_GetWatchers ( t * testing . T ) {
assert . NoError ( t , PrepareTestDatabase ( ) )
repo := AssertExistsAndLoadBean ( t , & Repository { ID : 1 } ) . ( * Repository )
watchers , err := repo . GetWatchers ( 1 )
assert . NoError ( t , err )
assert . Len ( t , watchers , repo . NumWatches )
for _ , watcher := range watchers {
AssertExistsAndLoadBean ( t , & Watch { UserID : watcher . ID , RepoID : repo . ID } )
}
2017-10-24 20:36:19 +03:00
repo = AssertExistsAndLoadBean ( t , & Repository { ID : 9 } ) . ( * Repository )
2017-02-17 11:02:11 +03:00
watchers , err = repo . GetWatchers ( 1 )
assert . NoError ( t , err )
assert . Len ( t , watchers , 0 )
}
func TestNotifyWatchers ( t * testing . T ) {
assert . NoError ( t , PrepareTestDatabase ( ) )
action := & Action {
ActUserID : 8 ,
RepoID : 1 ,
OpType : ActionStarRepo ,
}
assert . NoError ( t , NotifyWatchers ( action ) )
2017-10-24 20:36:19 +03:00
// One watchers are inactive, thus action is only created for user 8, 1, 4
2017-02-17 11:02:11 +03:00
AssertExistsAndLoadBean ( t , & Action {
ActUserID : action . ActUserID ,
2017-09-16 03:18:25 +03:00
UserID : 8 ,
2017-02-17 11:02:11 +03:00
RepoID : action . RepoID ,
OpType : action . OpType ,
} )
AssertExistsAndLoadBean ( t , & Action {
ActUserID : action . ActUserID ,
2017-10-24 20:36:19 +03:00
UserID : 1 ,
RepoID : action . RepoID ,
OpType : action . OpType ,
} )
AssertExistsAndLoadBean ( t , & Action {
ActUserID : action . ActUserID ,
UserID : 4 ,
2017-02-17 11:02:11 +03:00
RepoID : action . RepoID ,
OpType : action . OpType ,
} )
}