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  }