mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 20:21:47 +01:00 
			
		
		
		
	This PR rewrites `GetReviewer` function and move it to service layer. Reviewers should not be watchers, so that this PR removed all watchers from reviewers. When the repository is under an organization, the pull request unit read permission will be checked to resolve the bug of #32394 Fix #32394
		
			
				
	
	
		
			73 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2024 The Gitea Authors. All rights reserved.
 | |
| // SPDX-License-Identifier: MIT
 | |
| 
 | |
| package pull_test
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	"code.gitea.io/gitea/models/db"
 | |
| 	repo_model "code.gitea.io/gitea/models/repo"
 | |
| 	"code.gitea.io/gitea/models/unittest"
 | |
| 	pull_service "code.gitea.io/gitea/services/pull"
 | |
| 
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| func TestRepoGetReviewers(t *testing.T) {
 | |
| 	assert.NoError(t, unittest.PrepareTestDatabase())
 | |
| 
 | |
| 	// test public repo
 | |
| 	repo1 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
 | |
| 
 | |
| 	ctx := db.DefaultContext
 | |
| 	reviewers, err := pull_service.GetReviewers(ctx, repo1, 2, 0)
 | |
| 	assert.NoError(t, err)
 | |
| 	if assert.Len(t, reviewers, 1) {
 | |
| 		assert.ElementsMatch(t, []int64{2}, []int64{reviewers[0].ID})
 | |
| 	}
 | |
| 
 | |
| 	// should not include doer and remove the poster
 | |
| 	reviewers, err = pull_service.GetReviewers(ctx, repo1, 11, 2)
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.Len(t, reviewers, 0)
 | |
| 
 | |
| 	// should not include PR poster, if PR poster would be otherwise eligible
 | |
| 	reviewers, err = pull_service.GetReviewers(ctx, repo1, 11, 4)
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.Len(t, reviewers, 1)
 | |
| 
 | |
| 	// test private user repo
 | |
| 	repo2 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2})
 | |
| 
 | |
| 	reviewers, err = pull_service.GetReviewers(ctx, repo2, 2, 4)
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.Len(t, reviewers, 1)
 | |
| 	assert.EqualValues(t, reviewers[0].ID, 2)
 | |
| 
 | |
| 	// test private org repo
 | |
| 	repo3 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 3})
 | |
| 
 | |
| 	reviewers, err = pull_service.GetReviewers(ctx, repo3, 2, 1)
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.Len(t, reviewers, 2)
 | |
| 
 | |
| 	reviewers, err = pull_service.GetReviewers(ctx, repo3, 2, 2)
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.Len(t, reviewers, 1)
 | |
| }
 | |
| 
 | |
| func TestRepoGetReviewerTeams(t *testing.T) {
 | |
| 	assert.NoError(t, unittest.PrepareTestDatabase())
 | |
| 
 | |
| 	repo2 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2})
 | |
| 	teams, err := pull_service.GetReviewerTeams(db.DefaultContext, repo2)
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.Empty(t, teams)
 | |
| 
 | |
| 	repo3 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 3})
 | |
| 	teams, err = pull_service.GetReviewerTeams(db.DefaultContext, repo3)
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.Len(t, teams, 2)
 | |
| }
 |