| @@ -0,0 +1,20 @@ | |||||
| // Copyright 2019 The Gitea Authors. All rights reserved. | |||||
| // Use of this source code is governed by a MIT-style | |||||
| // license that can be found in the LICENSE file. | |||||
| package integrations | |||||
| import ( | |||||
| "net/http" | |||||
| "testing" | |||||
| ) | |||||
| func TestPullView_ReviewerMissed(t *testing.T) { | |||||
| prepareTestEnv(t) | |||||
| session := loginUser(t, "user1") | |||||
| req := NewRequest(t, "GET", "/pulls") | |||||
| session.MakeRequest(t, req, http.StatusOK) | |||||
| req = NewRequest(t, "GET", "/user2/repo1/pulls/3") | |||||
| session.MakeRequest(t, req, http.StatusOK) | |||||
| } | |||||
| @@ -52,3 +52,15 @@ | |||||
| tree_path: "README.md" | tree_path: "README.md" | ||||
| created_unix: 946684812 | created_unix: 946684812 | ||||
| invalidated: true | invalidated: true | ||||
| - | |||||
| id: 7 | |||||
| type: 21 # code comment | |||||
| poster_id: 100 | |||||
| issue_id: 3 | |||||
| content: "a review from a deleted user" | |||||
| line: -4 | |||||
| review_id: 10 | |||||
| tree_path: "README.md" | |||||
| created_unix: 946684812 | |||||
| invalidated: true | |||||
| @@ -70,3 +70,12 @@ | |||||
| content: "New review 3 rejected" | content: "New review 3 rejected" | ||||
| updated_unix: 946684810 | updated_unix: 946684810 | ||||
| created_unix: 946684810 | created_unix: 946684810 | ||||
| - | |||||
| id: 10 | |||||
| type: 3 | |||||
| reviewer_id: 100 | |||||
| issue_id: 3 | |||||
| content: "a deleted user's review" | |||||
| updated_unix: 946684810 | |||||
| created_unix: 946684810 | |||||
| @@ -447,6 +447,7 @@ func (c *Comment) loadReview(e Engine) (err error) { | |||||
| return err | return err | ||||
| } | } | ||||
| } | } | ||||
| c.Review.Issue = c.Issue | |||||
| return nil | return nil | ||||
| } | } | ||||
| @@ -773,6 +773,8 @@ func ViewIssue(ctx *context.Context) { | |||||
| // Render comments and and fetch participants. | // Render comments and and fetch participants. | ||||
| participants[0] = issue.Poster | participants[0] = issue.Poster | ||||
| for _, comment = range issue.Comments { | for _, comment = range issue.Comments { | ||||
| comment.Issue = issue | |||||
| if err := comment.LoadPoster(); err != nil { | if err := comment.LoadPoster(); err != nil { | ||||
| ctx.ServerError("LoadPoster", err) | ctx.ServerError("LoadPoster", err) | ||||
| return | return | ||||
| @@ -850,8 +852,11 @@ func ViewIssue(ctx *context.Context) { | |||||
| continue | continue | ||||
| } | } | ||||
| if err = comment.Review.LoadAttributes(); err != nil { | if err = comment.Review.LoadAttributes(); err != nil { | ||||
| ctx.ServerError("Review.LoadAttributes", err) | |||||
| return | |||||
| if !models.IsErrUserNotExist(err) { | |||||
| ctx.ServerError("Review.LoadAttributes", err) | |||||
| return | |||||
| } | |||||
| comment.Review.Reviewer = models.NewGhostUser() | |||||
| } | } | ||||
| if err = comment.Review.LoadCodeComments(); err != nil { | if err = comment.Review.LoadCodeComments(); err != nil { | ||||
| ctx.ServerError("Review.LoadCodeComments", err) | ctx.ServerError("Review.LoadCodeComments", err) | ||||