mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-03 08:02:36 +09:00 
			
		
		
		
	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:
		@@ -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) {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user