code.gitea.io/gitea@v1.22.3/models/org_test.go (about) 1 // Copyright 2017 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package models 5 6 import ( 7 "testing" 8 9 "code.gitea.io/gitea/models/db" 10 "code.gitea.io/gitea/models/organization" 11 "code.gitea.io/gitea/models/unittest" 12 user_model "code.gitea.io/gitea/models/user" 13 14 "github.com/stretchr/testify/assert" 15 ) 16 17 func TestUser_RemoveMember(t *testing.T) { 18 assert.NoError(t, unittest.PrepareTestDatabase()) 19 20 org := unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3}) 21 user4 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 4}) 22 user5 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 5}) 23 24 // remove a user that is a member 25 unittest.AssertExistsAndLoadBean(t, &organization.OrgUser{UID: user4.ID, OrgID: org.ID}) 26 prevNumMembers := org.NumMembers 27 assert.NoError(t, RemoveOrgUser(db.DefaultContext, org, user4)) 28 unittest.AssertNotExistsBean(t, &organization.OrgUser{UID: user4.ID, OrgID: org.ID}) 29 30 org = unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: org.ID}) 31 assert.Equal(t, prevNumMembers-1, org.NumMembers) 32 33 // remove a user that is not a member 34 unittest.AssertNotExistsBean(t, &organization.OrgUser{UID: user5.ID, OrgID: org.ID}) 35 prevNumMembers = org.NumMembers 36 assert.NoError(t, RemoveOrgUser(db.DefaultContext, org, user5)) 37 unittest.AssertNotExistsBean(t, &organization.OrgUser{UID: user5.ID, OrgID: org.ID}) 38 39 org = unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: org.ID}) 40 assert.Equal(t, prevNumMembers, org.NumMembers) 41 42 unittest.CheckConsistencyFor(t, &user_model.User{}, &organization.Team{}) 43 } 44 45 func TestRemoveOrgUser(t *testing.T) { 46 assert.NoError(t, unittest.PrepareTestDatabase()) 47 48 testSuccess := func(org *organization.Organization, user *user_model.User) { 49 expectedNumMembers := org.NumMembers 50 if unittest.BeanExists(t, &organization.OrgUser{OrgID: org.ID, UID: user.ID}) { 51 expectedNumMembers-- 52 } 53 assert.NoError(t, RemoveOrgUser(db.DefaultContext, org, user)) 54 unittest.AssertNotExistsBean(t, &organization.OrgUser{OrgID: org.ID, UID: user.ID}) 55 org = unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: org.ID}) 56 assert.EqualValues(t, expectedNumMembers, org.NumMembers) 57 } 58 59 org3 := unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3}) 60 org7 := unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 7}) 61 user4 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 4}) 62 user5 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 5}) 63 64 testSuccess(org3, user4) 65 66 org3 = unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3}) 67 testSuccess(org3, user4) 68 69 err := RemoveOrgUser(db.DefaultContext, org7, user5) 70 assert.Error(t, err) 71 assert.True(t, organization.IsErrLastOrgOwner(err)) 72 unittest.AssertExistsAndLoadBean(t, &organization.OrgUser{OrgID: org7.ID, UID: user5.ID}) 73 unittest.CheckConsistencyFor(t, &user_model.User{}, &organization.Team{}) 74 }