prevent empty review comment (#4632)
* prevent empty review comment This would only require a comment for rejection and comment * add tests * add comment
This commit is contained in:
parent
59b10e66f7
commit
0df7cab4fb
4 changed files with 57 additions and 0 deletions
|
@ -402,6 +402,14 @@ func (f SubmitReviewForm) ReviewType() models.ReviewType {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HasEmptyContent checks if the content of the review form is empty.
|
||||||
|
func (f SubmitReviewForm) HasEmptyContent() bool {
|
||||||
|
reviewType := f.ReviewType()
|
||||||
|
|
||||||
|
return (reviewType == models.ReviewTypeComment || reviewType == models.ReviewTypeReject) &&
|
||||||
|
len(strings.TrimSpace(f.Content)) == 0
|
||||||
|
}
|
||||||
|
|
||||||
// __________ .__
|
// __________ .__
|
||||||
// \______ \ ____ | | ____ _____ ______ ____
|
// \______ \ ____ | | ____ _____ ______ ____
|
||||||
// | _// __ \| | _/ __ \\__ \ / ___// __ \
|
// | _// __ \| | _/ __ \\__ \ / ___// __ \
|
||||||
|
|
41
modules/auth/repo_form_test.go
Normal file
41
modules/auth/repo_form_test.go
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
// Copyright 2018 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 auth
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSubmitReviewForm_IsEmpty(t *testing.T) {
|
||||||
|
|
||||||
|
cases := []struct {
|
||||||
|
form SubmitReviewForm
|
||||||
|
expected bool
|
||||||
|
}{
|
||||||
|
// Approved PR with a comment shouldn't count as empty
|
||||||
|
{SubmitReviewForm{Type: "approve", Content: "Awesome"}, false},
|
||||||
|
|
||||||
|
// Approved PR without a comment shouldn't count as empty
|
||||||
|
{SubmitReviewForm{Type: "approve", Content: ""}, false},
|
||||||
|
|
||||||
|
// Rejected PR without a comment should count as empty
|
||||||
|
{SubmitReviewForm{Type: "reject", Content: ""}, true},
|
||||||
|
|
||||||
|
// Rejected PR with a comment shouldn't count as empty
|
||||||
|
{SubmitReviewForm{Type: "reject", Content: "Awesome"}, false},
|
||||||
|
|
||||||
|
// Comment review on a PR with a comment shouldn't count as empty
|
||||||
|
{SubmitReviewForm{Type: "comment", Content: "Awesome"}, false},
|
||||||
|
|
||||||
|
// Comment review on a PR without a comment should count as empty
|
||||||
|
{SubmitReviewForm{Type: "comment", Content: ""}, true},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, v := range cases {
|
||||||
|
assert.Equal(t, v.expected, v.form.HasEmptyContent())
|
||||||
|
}
|
||||||
|
}
|
|
@ -815,6 +815,7 @@ issues.dependency.add_error_cannot_create_circular = You cannot create a depende
|
||||||
issues.dependency.add_error_dep_not_same_repo = Both issues must be in the same repository.
|
issues.dependency.add_error_dep_not_same_repo = Both issues must be in the same repository.
|
||||||
issues.review.approve = "approved these changes %s"
|
issues.review.approve = "approved these changes %s"
|
||||||
issues.review.comment = "reviewed %s"
|
issues.review.comment = "reviewed %s"
|
||||||
|
issues.review.content.empty = You need to leave a comment indicating the requested change(s).
|
||||||
issues.review.reject = "rejected these changes %s"
|
issues.review.reject = "rejected these changes %s"
|
||||||
issues.review.pending = Pending
|
issues.review.pending = Pending
|
||||||
issues.review.review = Review
|
issues.review.review = Review
|
||||||
|
|
|
@ -107,6 +107,13 @@ func SubmitReview(ctx *context.Context, form auth.SubmitReviewForm) {
|
||||||
ctx.ServerError("GetCurrentReview", fmt.Errorf("unknown ReviewType: %s", form.Type))
|
ctx.ServerError("GetCurrentReview", fmt.Errorf("unknown ReviewType: %s", form.Type))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if form.HasEmptyContent() {
|
||||||
|
ctx.Flash.Error(ctx.Tr("repo.issues.review.content.empty"))
|
||||||
|
ctx.Redirect(fmt.Sprintf("%s/pulls/%d", ctx.Repo.RepoLink, issue.Index))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
review, err = models.GetCurrentReview(ctx.User, issue)
|
review, err = models.GetCurrentReview(ctx.User, issue)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if !models.IsErrReviewNotExist(err) {
|
if !models.IsErrReviewNotExist(err) {
|
||||||
|
|
Loading…
Reference in a new issue