2017-01-25 13:37:10 +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"
2021-09-19 14:49:59 +03:00
"code.gitea.io/gitea/models/db"
2021-11-12 17:36:47 +03:00
"code.gitea.io/gitea/models/unittest"
2021-11-17 15:34:35 +03:00
2017-01-25 13:37:10 +03:00
"github.com/stretchr/testify/assert"
)
func TestStarRepo ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2017-01-25 13:37:10 +03:00
const userID = 2
const repoID = 1
2021-11-16 11:53:21 +03:00
unittest . AssertNotExistsBean ( t , & Star { UID : userID , RepoID : repoID } )
2017-01-25 13:37:10 +03:00
assert . NoError ( t , StarRepo ( userID , repoID , true ) )
2021-11-16 11:53:21 +03:00
unittest . AssertExistsAndLoadBean ( t , & Star { UID : userID , RepoID : repoID } )
2017-01-25 13:37:10 +03:00
assert . NoError ( t , StarRepo ( userID , repoID , true ) )
2021-11-16 11:53:21 +03:00
unittest . AssertExistsAndLoadBean ( t , & Star { UID : userID , RepoID : repoID } )
2017-01-25 13:37:10 +03:00
assert . NoError ( t , StarRepo ( userID , repoID , false ) )
2021-11-16 11:53:21 +03:00
unittest . AssertNotExistsBean ( t , & Star { UID : userID , RepoID : repoID } )
2017-01-25 13:37:10 +03:00
}
func TestIsStaring ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2017-01-25 13:37:10 +03:00
assert . True ( t , IsStaring ( 2 , 4 ) )
assert . False ( t , IsStaring ( 3 , 4 ) )
}
func TestRepository_GetStargazers ( t * testing . T ) {
// repo with stargazers
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2021-11-16 11:53:21 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & Repository { ID : 4 } ) . ( * Repository )
2021-09-24 14:32:56 +03:00
gazers , err := repo . GetStargazers ( db . ListOptions { Page : 0 } )
2017-01-25 13:37:10 +03:00
assert . NoError ( t , err )
2017-08-28 12:17:45 +03:00
if assert . Len ( t , gazers , 1 ) {
assert . Equal ( t , int64 ( 2 ) , gazers [ 0 ] . ID )
}
2017-01-25 13:37:10 +03:00
}
func TestRepository_GetStargazers2 ( t * testing . T ) {
// repo with stargazers
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2021-11-16 11:53:21 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & Repository { ID : 3 } ) . ( * Repository )
2021-09-24 14:32:56 +03:00
gazers , err := repo . GetStargazers ( db . ListOptions { Page : 0 } )
2017-01-25 13:37:10 +03:00
assert . NoError ( t , err )
assert . Len ( t , gazers , 0 )
}
func TestUser_GetStarredRepos ( t * testing . T ) {
// user who has starred repos
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2017-01-25 13:37:10 +03:00
2021-11-16 11:53:21 +03:00
user := unittest . AssertExistsAndLoadBean ( t , & User { ID : 2 } ) . ( * User )
2017-02-07 14:54:16 +03:00
starred , err := user . GetStarredRepos ( false , 1 , 10 , "" )
2017-01-25 13:37:10 +03:00
assert . NoError ( t , err )
2017-08-28 12:17:45 +03:00
if assert . Len ( t , starred , 1 ) {
assert . Equal ( t , int64 ( 4 ) , starred [ 0 ] . ID )
}
2017-01-25 13:37:10 +03:00
2017-02-07 14:54:16 +03:00
starred , err = user . GetStarredRepos ( true , 1 , 10 , "" )
2017-01-25 13:37:10 +03:00
assert . NoError ( t , err )
2017-08-28 12:17:45 +03:00
if assert . Len ( t , starred , 2 ) {
assert . Equal ( t , int64 ( 2 ) , starred [ 0 ] . ID )
assert . Equal ( t , int64 ( 4 ) , starred [ 1 ] . ID )
}
2017-01-25 13:37:10 +03:00
}
func TestUser_GetStarredRepos2 ( t * testing . T ) {
// user who has no starred repos
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2017-01-25 13:37:10 +03:00
2021-11-16 11:53:21 +03:00
user := unittest . AssertExistsAndLoadBean ( t , & User { ID : 1 } ) . ( * User )
2017-02-07 14:54:16 +03:00
starred , err := user . GetStarredRepos ( false , 1 , 10 , "" )
2017-01-25 13:37:10 +03:00
assert . NoError ( t , err )
assert . Len ( t , starred , 0 )
2017-02-07 14:54:16 +03:00
starred , err = user . GetStarredRepos ( true , 1 , 10 , "" )
2017-01-25 13:37:10 +03:00
assert . NoError ( t , err )
assert . Len ( t , starred , 0 )
}
2017-02-07 14:54:16 +03:00
func TestUserGetStarredRepoCount ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2017-02-07 14:54:16 +03:00
2021-11-16 11:53:21 +03:00
user := unittest . AssertExistsAndLoadBean ( t , & User { ID : 2 } ) . ( * User )
2017-02-07 14:54:16 +03:00
counts , err := user . GetStarredRepoCount ( false )
assert . NoError ( t , err )
assert . Equal ( t , int64 ( 1 ) , counts )
counts , err = user . GetStarredRepoCount ( true )
assert . NoError ( t , err )
assert . Equal ( t , int64 ( 2 ) , counts )
}