Skip to content

Commit 61d3d92

Browse files
GiteaBotlng2020
andauthored
Fix 500 when deleting a dismissed review (#27903) (#27910)
Backport #27903 by @lng2020 Fix #27767 Add a test to ensure its behavior Co-authored-by: Nanguan Lin <70063547+lng2020@users.noreply.github.com>
1 parent 28e3d0b commit 61d3d92

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

models/issues/review.go

+10
Original file line numberDiff line numberDiff line change
@@ -898,6 +898,16 @@ func DeleteReview(ctx context.Context, r *Review) error {
898898
return err
899899
}
900900

901+
opts = FindCommentsOptions{
902+
Type: CommentTypeDismissReview,
903+
IssueID: r.IssueID,
904+
ReviewID: r.ID,
905+
}
906+
907+
if _, err := sess.Where(opts.ToConds()).Delete(new(Comment)); err != nil {
908+
return err
909+
}
910+
901911
if _, err := sess.ID(r.ID).Delete(new(Review)); err != nil {
902912
return err
903913
}

models/issues/review_test.go

+30
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88

99
"code.gitea.io/gitea/models/db"
1010
issues_model "code.gitea.io/gitea/models/issues"
11+
repo_model "code.gitea.io/gitea/models/repo"
1112
"code.gitea.io/gitea/models/unittest"
1213
user_model "code.gitea.io/gitea/models/user"
1314

@@ -258,3 +259,32 @@ func TestDeleteReview(t *testing.T) {
258259
assert.NoError(t, err)
259260
assert.True(t, review1.Official)
260261
}
262+
263+
func TestDeleteDismissedReview(t *testing.T) {
264+
assert.NoError(t, unittest.PrepareTestDatabase())
265+
266+
issue := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: 2})
267+
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
268+
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: issue.RepoID})
269+
review, err := issues_model.CreateReview(db.DefaultContext, issues_model.CreateReviewOptions{
270+
Content: "reject",
271+
Type: issues_model.ReviewTypeReject,
272+
Official: false,
273+
Issue: issue,
274+
Reviewer: user,
275+
})
276+
assert.NoError(t, err)
277+
assert.NoError(t, issues_model.DismissReview(db.DefaultContext, review, true))
278+
comment, err := issues_model.CreateComment(db.DefaultContext, &issues_model.CreateCommentOptions{
279+
Type: issues_model.CommentTypeDismissReview,
280+
Doer: user,
281+
Repo: repo,
282+
Issue: issue,
283+
ReviewID: review.ID,
284+
Content: "dismiss",
285+
})
286+
assert.NoError(t, err)
287+
unittest.AssertExistsAndLoadBean(t, &issues_model.Comment{ID: comment.ID})
288+
assert.NoError(t, issues_model.DeleteReview(db.DefaultContext, review))
289+
unittest.AssertNotExistsBean(t, &issues_model.Comment{ID: comment.ID})
290+
}

0 commit comments

Comments
 (0)