mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-31 14:31:02 +00:00 
			
		
		
		
	- Add condition to ensure doer isn't nil when using it. - Added unit test. - Resolves #2055 (cherry picked from commit8f1a74fb29) (cherry picked from commit60ac881776) (cherry picked from commit5fdc461ac5) (cherry picked from commit70623e8da1) (cherry picked from commit1d5153aaf6) (cherry picked from commit3927f0c8b2)
		
			
				
	
	
		
			77 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2020 The Gitea Authors. All rights reserved.
 | |
| // SPDX-License-Identifier: MIT
 | |
| 
 | |
| package convert
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	"code.gitea.io/gitea/models/db"
 | |
| 	issues_model "code.gitea.io/gitea/models/issues"
 | |
| 	"code.gitea.io/gitea/models/perm"
 | |
| 	access_model "code.gitea.io/gitea/models/perm/access"
 | |
| 	repo_model "code.gitea.io/gitea/models/repo"
 | |
| 	"code.gitea.io/gitea/models/unittest"
 | |
| 	user_model "code.gitea.io/gitea/models/user"
 | |
| 	"code.gitea.io/gitea/modules/git"
 | |
| 	"code.gitea.io/gitea/modules/structs"
 | |
| 
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| func TestPullRequest_APIFormat(t *testing.T) {
 | |
| 	// with HeadRepo
 | |
| 	assert.NoError(t, unittest.PrepareTestDatabase())
 | |
| 	headRepo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
 | |
| 	pr := unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{ID: 1})
 | |
| 	assert.NoError(t, pr.LoadAttributes(db.DefaultContext))
 | |
| 	assert.NoError(t, pr.LoadIssue(db.DefaultContext))
 | |
| 	apiPullRequest := ToAPIPullRequest(git.DefaultContext, pr, nil)
 | |
| 	assert.NotNil(t, apiPullRequest)
 | |
| 	assert.EqualValues(t, &structs.PRBranchInfo{
 | |
| 		Name:       "branch1",
 | |
| 		Ref:        "refs/pull/2/head",
 | |
| 		Sha:        "4a357436d925b5c974181ff12a994538ddc5a269",
 | |
| 		RepoID:     1,
 | |
| 		Repository: ToRepo(db.DefaultContext, headRepo, access_model.Permission{AccessMode: perm.AccessModeRead}),
 | |
| 	}, apiPullRequest.Head)
 | |
| 
 | |
| 	// withOut HeadRepo
 | |
| 	pr = unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{ID: 1})
 | |
| 	assert.NoError(t, pr.LoadIssue(db.DefaultContext))
 | |
| 	assert.NoError(t, pr.LoadAttributes(db.DefaultContext))
 | |
| 	// simulate fork deletion
 | |
| 	pr.HeadRepo = nil
 | |
| 	pr.HeadRepoID = 100000
 | |
| 	apiPullRequest = ToAPIPullRequest(git.DefaultContext, pr, nil)
 | |
| 	assert.NotNil(t, apiPullRequest)
 | |
| 	assert.Nil(t, apiPullRequest.Head.Repository)
 | |
| 	assert.EqualValues(t, -1, apiPullRequest.Head.RepoID)
 | |
| }
 | |
| 
 | |
| func TestPullReviewList(t *testing.T) {
 | |
| 	assert.NoError(t, unittest.PrepareTestDatabase())
 | |
| 
 | |
| 	t.Run("Pending review", func(t *testing.T) {
 | |
| 		reviewer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
 | |
| 		review := unittest.AssertExistsAndLoadBean(t, &issues_model.Review{ID: 6, ReviewerID: reviewer.ID})
 | |
| 		rl := []*issues_model.Review{review}
 | |
| 
 | |
| 		t.Run("Anonymous", func(t *testing.T) {
 | |
| 			prList, err := ToPullReviewList(db.DefaultContext, rl, nil)
 | |
| 			assert.NoError(t, err)
 | |
| 			assert.Empty(t, prList)
 | |
| 		})
 | |
| 		t.Run("Reviewer", func(t *testing.T) {
 | |
| 			prList, err := ToPullReviewList(db.DefaultContext, rl, reviewer)
 | |
| 			assert.NoError(t, err)
 | |
| 			assert.Len(t, prList, 1)
 | |
| 		})
 | |
| 		t.Run("Admin", func(t *testing.T) {
 | |
| 			adminUser := unittest.AssertExistsAndLoadBean(t, &user_model.User{IsAdmin: true}, unittest.Cond("id != ?", reviewer.ID))
 | |
| 			prList, err := ToPullReviewList(db.DefaultContext, rl, adminUser)
 | |
| 			assert.NoError(t, err)
 | |
| 			assert.Len(t, prList, 1)
 | |
| 		})
 | |
| 	})
 | |
| }
 |