code.gitea.io/gitea@v1.22.3/models/repo/user_repo_test.go (about) 1 // Copyright 2017 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package repo_test 5 6 import ( 7 "testing" 8 9 "code.gitea.io/gitea/models/db" 10 repo_model "code.gitea.io/gitea/models/repo" 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 TestRepoAssignees(t *testing.T) { 18 assert.NoError(t, unittest.PrepareTestDatabase()) 19 20 repo2 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2}) 21 users, err := repo_model.GetRepoAssignees(db.DefaultContext, repo2) 22 assert.NoError(t, err) 23 assert.Len(t, users, 1) 24 assert.Equal(t, users[0].ID, int64(2)) 25 26 repo21 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 21}) 27 users, err = repo_model.GetRepoAssignees(db.DefaultContext, repo21) 28 assert.NoError(t, err) 29 if assert.Len(t, users, 4) { 30 assert.ElementsMatch(t, []int64{10, 15, 16, 18}, []int64{users[0].ID, users[1].ID, users[2].ID, users[3].ID}) 31 } 32 33 // do not return deactivated users 34 assert.NoError(t, user_model.UpdateUserCols(db.DefaultContext, &user_model.User{ID: 15, IsActive: false}, "is_active")) 35 users, err = repo_model.GetRepoAssignees(db.DefaultContext, repo21) 36 assert.NoError(t, err) 37 if assert.Len(t, users, 3) { 38 assert.NotContains(t, []int64{users[0].ID, users[1].ID, users[2].ID}, 15) 39 } 40 } 41 42 func TestRepoGetReviewers(t *testing.T) { 43 assert.NoError(t, unittest.PrepareTestDatabase()) 44 45 // test public repo 46 repo1 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) 47 48 ctx := db.DefaultContext 49 reviewers, err := repo_model.GetReviewers(ctx, repo1, 2, 2) 50 assert.NoError(t, err) 51 if assert.Len(t, reviewers, 3) { 52 assert.ElementsMatch(t, []int64{1, 4, 11}, []int64{reviewers[0].ID, reviewers[1].ID, reviewers[2].ID}) 53 } 54 55 // should include doer if doer is not PR poster. 56 reviewers, err = repo_model.GetReviewers(ctx, repo1, 11, 2) 57 assert.NoError(t, err) 58 assert.Len(t, reviewers, 3) 59 60 // should not include PR poster, if PR poster would be otherwise eligible 61 reviewers, err = repo_model.GetReviewers(ctx, repo1, 11, 4) 62 assert.NoError(t, err) 63 assert.Len(t, reviewers, 2) 64 65 // test private user repo 66 repo2 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2}) 67 68 reviewers, err = repo_model.GetReviewers(ctx, repo2, 2, 4) 69 assert.NoError(t, err) 70 assert.Len(t, reviewers, 1) 71 assert.EqualValues(t, reviewers[0].ID, 2) 72 73 // test private org repo 74 repo3 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 3}) 75 76 reviewers, err = repo_model.GetReviewers(ctx, repo3, 2, 1) 77 assert.NoError(t, err) 78 assert.Len(t, reviewers, 2) 79 80 reviewers, err = repo_model.GetReviewers(ctx, repo3, 2, 2) 81 assert.NoError(t, err) 82 assert.Len(t, reviewers, 1) 83 }