2017-01-24 11:16:36 -05:00
// Copyright 2017 The Gitea Authors. All rights reserved.
2022-11-27 13:20:29 -05:00
// SPDX-License-Identifier: MIT
2017-01-24 11:16:36 -05:00
package models
import (
"testing"
2023-10-15 23:46:06 +08:00
"code.gitea.io/gitea/models/db"
2022-03-29 14:29:02 +08:00
"code.gitea.io/gitea/models/organization"
2021-11-12 22:36:47 +08:00
"code.gitea.io/gitea/models/unittest"
2021-11-24 17:49:20 +08:00
user_model "code.gitea.io/gitea/models/user"
2019-02-18 17:00:27 +01:00
2017-01-24 11:16:36 -05:00
"github.com/stretchr/testify/assert"
)
func TestUser_RemoveMember ( t * testing . T ) {
2021-11-12 22:36:47 +08:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2022-08-16 10:22:25 +08:00
org := unittest . AssertExistsAndLoadBean ( t , & organization . Organization { ID : 3 } )
2017-01-24 11:16:36 -05:00
// remove a user that is a member
2022-03-29 14:29:02 +08:00
unittest . AssertExistsAndLoadBean ( t , & organization . OrgUser { UID : 4 , OrgID : 3 } )
2017-01-24 11:16:36 -05:00
prevNumMembers := org . NumMembers
2023-10-15 23:46:06 +08:00
assert . NoError ( t , RemoveOrgUser ( db . DefaultContext , org . ID , 4 ) )
2022-03-29 14:29:02 +08:00
unittest . AssertNotExistsBean ( t , & organization . OrgUser { UID : 4 , OrgID : 3 } )
2022-08-16 10:22:25 +08:00
org = unittest . AssertExistsAndLoadBean ( t , & organization . Organization { ID : 3 } )
2017-01-24 11:16:36 -05:00
assert . Equal ( t , prevNumMembers - 1 , org . NumMembers )
// remove a user that is not a member
2022-03-29 14:29:02 +08:00
unittest . AssertNotExistsBean ( t , & organization . OrgUser { UID : 5 , OrgID : 3 } )
2017-01-24 11:16:36 -05:00
prevNumMembers = org . NumMembers
2023-10-15 23:46:06 +08:00
assert . NoError ( t , RemoveOrgUser ( db . DefaultContext , org . ID , 5 ) )
2022-03-29 14:29:02 +08:00
unittest . AssertNotExistsBean ( t , & organization . OrgUser { UID : 5 , OrgID : 3 } )
2022-08-16 10:22:25 +08:00
org = unittest . AssertExistsAndLoadBean ( t , & organization . Organization { ID : 3 } )
2017-01-24 11:16:36 -05:00
assert . Equal ( t , prevNumMembers , org . NumMembers )
2017-02-07 06:47:55 -05:00
2022-03-29 14:29:02 +08:00
unittest . CheckConsistencyFor ( t , & user_model . User { } , & organization . Team { } )
}
func TestRemoveOrgUser ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
testSuccess := func ( orgID , userID int64 ) {
2022-08-16 10:22:25 +08:00
org := unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : orgID } )
2022-03-29 14:29:02 +08:00
expectedNumMembers := org . NumMembers
if unittest . BeanExists ( t , & organization . OrgUser { OrgID : orgID , UID : userID } ) {
expectedNumMembers --
}
2023-10-15 23:46:06 +08:00
assert . NoError ( t , RemoveOrgUser ( db . DefaultContext , orgID , userID ) )
2022-03-29 14:29:02 +08:00
unittest . AssertNotExistsBean ( t , & organization . OrgUser { OrgID : orgID , UID : userID } )
2022-08-16 10:22:25 +08:00
org = unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : orgID } )
2022-03-29 14:29:02 +08:00
assert . EqualValues ( t , expectedNumMembers , org . NumMembers )
}
testSuccess ( 3 , 4 )
testSuccess ( 3 , 4 )
2023-10-15 23:46:06 +08:00
err := RemoveOrgUser ( db . DefaultContext , 7 , 5 )
2022-03-29 14:29:02 +08:00
assert . Error ( t , err )
assert . True ( t , organization . IsErrLastOrgOwner ( err ) )
unittest . AssertExistsAndLoadBean ( t , & organization . OrgUser { OrgID : 7 , UID : 5 } )
unittest . CheckConsistencyFor ( t , & user_model . User { } , & organization . Team { } )
2017-01-24 11:16:36 -05:00
}