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  }