1bae2430c0
- Add condition to ensure doer isn't nil when using it. - Added unit test. - Resolves #2055 (cherry picked from commit 8f1a74fb2944c2a1cf3824c2c6f233d6df2df593) (cherry picked from commit 60ac881776c750bc25e1d142e201e78e48e3ac23) (cherry picked from commit 5fdc461ac53ec486e609ad6ac40cde8e701c0fb8) (cherry picked from commit 70623e8da1eb6c7e13a3cef04f1db9d479ffd7a4) (cherry picked from commit 1d5153aaf69bdd114800ebc2a1268896f8dc3ff4) (cherry picked from commit 3927f0c8b2c67733303005ebad08fb6835b22e36)
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)
|
|
})
|
|
})
|
|
}
|