2017-02-02 15:33:36 +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 (
2019-08-02 19:06:28 +03:00
"fmt"
2017-02-02 15:33:36 +03:00
"testing"
2021-11-12 17:36:47 +03:00
"code.gitea.io/gitea/models/unittest"
2021-11-11 10:03:30 +03:00
user_model "code.gitea.io/gitea/models/user"
2017-02-14 15:16:00 +03:00
2017-02-02 15:33:36 +03:00
"github.com/stretchr/testify/assert"
)
2021-11-24 12:49:20 +03:00
func TestFollowUser ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2021-11-24 12:49:20 +03: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 14:32:56 +03:00
}
2019-08-02 19:06:28 +03:00
func TestUserIsPublicMember ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2019-08-02 19:06:28 +03: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-14 21:52:12 +03:00
func testUserIsPublicMember ( t * testing . T , uid , orgID int64 , expected bool ) {
2021-11-24 12:49:20 +03:00
user , err := user_model . GetUserByID ( uid )
2019-08-02 19:06:28 +03:00
assert . NoError ( t , err )
2021-11-22 18:21:55 +03:00
is , err := IsPublicMembership ( orgID , user . ID )
assert . NoError ( t , err )
assert . Equal ( t , expected , is )
2019-08-02 19:06:28 +03:00
}
func TestIsUserOrgOwner ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2019-08-02 19:06:28 +03: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-14 21:52:12 +03:00
func testIsUserOrgOwner ( t * testing . T , uid , orgID int64 , expected bool ) {
2021-11-24 12:49:20 +03:00
user , err := user_model . GetUserByID ( uid )
2019-08-02 19:06:28 +03:00
assert . NoError ( t , err )
2021-11-22 18:21:55 +03:00
is , err := IsOrganizationOwner ( orgID , user . ID )
assert . NoError ( t , err )
assert . Equal ( t , expected , is )
2019-08-02 19:06:28 +03:00
}