2017-02-02 20:33:36 +08: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 (
2019-08-02 18:06:28 +02:00
"fmt"
2017-02-02 20:33:36 +08:00
"testing"
2021-11-12 22:36:47 +08:00
"code.gitea.io/gitea/models/unittest"
2021-11-11 15:03:30 +08:00
user_model "code.gitea.io/gitea/models/user"
2017-02-14 20:16:00 +08:00
2017-02-02 20:33:36 +08:00
"github.com/stretchr/testify/assert"
)
2021-11-24 17:49:20 +08:00
func TestFollowUser ( t * testing . T ) {
2021-11-12 22:36:47 +08:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2021-11-24 17:49:20 +08:00
testSuccess := func ( followerID , followedID int64 ) {
assert . NoError ( t , user_model . FollowUser ( followerID , followedID ) )
unittest . AssertExistsAndLoadBean ( t , & user_model . Follow { UserID : followerID , FollowID : followedID } )
}
testSuccess ( 4 , 2 )
testSuccess ( 5 , 2 )
assert . NoError ( t , user_model . FollowUser ( 2 , 2 ) )
unittest . CheckConsistencyFor ( t , & user_model . User { } )
}
func TestUnfollowUser ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
testSuccess := func ( followerID , followedID int64 ) {
assert . NoError ( t , user_model . UnfollowUser ( followerID , followedID ) )
unittest . AssertNotExistsBean ( t , & user_model . Follow { UserID : followerID , FollowID : followedID } )
}
testSuccess ( 4 , 2 )
testSuccess ( 5 , 2 )
testSuccess ( 2 , 2 )
unittest . CheckConsistencyFor ( t , & user_model . User { } )
2021-09-24 19:32:56 +08:00
}
2019-08-02 18:06:28 +02:00
func TestUserIsPublicMember ( t * testing . T ) {
2021-11-12 22:36:47 +08:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2019-08-02 18:06:28 +02:00
tt := [ ] struct {
uid int64
orgid int64
expected bool
} {
{ 2 , 3 , true } ,
{ 4 , 3 , false } ,
{ 5 , 6 , true } ,
{ 5 , 7 , false } ,
}
for _ , v := range tt {
t . Run ( fmt . Sprintf ( "UserId%dIsPublicMemberOf%d" , v . uid , v . orgid ) , func ( t * testing . T ) {
testUserIsPublicMember ( t , v . uid , v . orgid , v . expected )
} )
}
}
2021-03-15 02:52:12 +08:00
func testUserIsPublicMember ( t * testing . T , uid , orgID int64 , expected bool ) {
2021-11-24 17:49:20 +08:00
user , err := user_model . GetUserByID ( uid )
2019-08-02 18:06:28 +02:00
assert . NoError ( t , err )
2021-11-22 23:21:55 +08:00
is , err := IsPublicMembership ( orgID , user . ID )
assert . NoError ( t , err )
assert . Equal ( t , expected , is )
2019-08-02 18:06:28 +02:00
}
func TestIsUserOrgOwner ( t * testing . T ) {
2021-11-12 22:36:47 +08:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2019-08-02 18:06:28 +02:00
tt := [ ] struct {
uid int64
orgid int64
expected bool
} {
{ 2 , 3 , true } ,
{ 4 , 3 , false } ,
{ 5 , 6 , true } ,
{ 5 , 7 , true } ,
}
for _ , v := range tt {
t . Run ( fmt . Sprintf ( "UserId%dIsOrgOwnerOf%d" , v . uid , v . orgid ) , func ( t * testing . T ) {
testIsUserOrgOwner ( t , v . uid , v . orgid , v . expected )
} )
}
}
2021-03-15 02:52:12 +08:00
func testIsUserOrgOwner ( t * testing . T , uid , orgID int64 , expected bool ) {
2021-11-24 17:49:20 +08:00
user , err := user_model . GetUserByID ( uid )
2019-08-02 18:06:28 +02:00
assert . NoError ( t , err )
2021-11-22 23:21:55 +08:00
is , err := IsOrganizationOwner ( orgID , user . ID )
assert . NoError ( t , err )
assert . Equal ( t , expected , is )
2019-08-02 18:06:28 +02:00
}