mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	* Initial ui components for pull request review
* Add Review
Add IssueComment types
Signed-off-by: Jonas Franz <info@jonasfranz.software>
(cherry picked from commit 2b4daab)
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Replace ReviewComment with Content
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add load functions
Add ReviewID to findComments
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add create review comment implementation
Add migration for review
Other small changes
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Simplified create and find functions for review
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Moved "Pending" to first position
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add GetCurrentReview to simplify fetching current review
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Preview for listing comments
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Move new comment form to its own file
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Implement Review form
Show Review comments on comment stream
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add support for single comments
Showing buttons in context
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add pending tag to pending review comments
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add unit tests for Review
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fetch all review ids at once
Add unit tests
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* gofmt
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Improved comment rendering in "Files" view by adding Comments to DiffLine
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add support for invalidating comments
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Switched back to code.gitea.io/git
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Moved review migration from v64 to v65
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Rebuild css
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* gofmt
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Improve translations
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fix unit tests by updating fixtures and updating outdated test
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Comments will be shown at the right place now
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add support for deleting CodeComments
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fix problems caused by files in subdirectories
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add support for showing code comments of reviews in conversation
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add support for "Show/Hide outdated"
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Update code.gitea.io/git
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add support for new webhooks
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Update comparison
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Resolve conflicts
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Minor UI improvements
* update code.gitea.io/git
* Fix ui bug reported by @lunny causing wrong position of add button
Add functionality to "Cancel" button
Add scale effects to add button
Hide "Cancel" button for existing comments
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Prepare solving conflicts
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Show add button only if no comments already exist for the line
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add missing vendor files
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Check if reviewer is nil
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Show forms only to users who are logged in
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Revert "Show forms only to users who are logged in"
This reverts commit c083682
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Save patch in comment
Render patch for code comments
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add link to comment in code
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add reply form to comment list
Show forms only to signed in users
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add 'Reply' as translatable
Add CODE_COMMENT_LINES setting
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* gofmt
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fix problems introduced by checking for singed in user
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add v70
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Update generated stylesheet
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fix preview
Beginn with new review comment patch system
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add new algo to generate diff for line range
Remove old algo used for cutting big diffs (it was very buggy)
* Add documentation and example for CutDiffAroundLine
* Fix example of CutDiffAroundLine
* Fix some comment UI rendering bugs
* Add code comment edit mode
* Send notifications / actions to users until review gets published
Fix diff generation bug
Fix wrong hashtag
* Fix vet errors
* Send notifications also for single comments
* Fix some notification bugs, fix link
* Fix: add comment icon is only shown on code lines
* Add lint comment
* Add unit tests for git diff
* Add more error messages
* Regenerated css
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* fmt
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Regenerated CSS with latest less version
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fix test by updating comment type to new ID
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Introducing CodeComments as type for map[string]map[int64][]*Comment
Other minor code improvements
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Fix data-tab issues
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Remove unnecessary change
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* refactored checkForInvalidation
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Append comments instead of setting
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Use HeadRepo instead of BaseRepo
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Update migration
Signed-off-by: Jonas Franz <info@jonasfranz.de>
* Regenerated CSS
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Add copyright
Signed-off-by: Jonas Franz <info@jonasfranz.software>
* Update index.css
Signed-off-by: Jonas Franz <info@jonasfranz.software>
		
	
		
			
				
	
	
		
			108 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package models
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| func TestGetReviewByID(t *testing.T) {
 | |
| 	assert.NoError(t, PrepareTestDatabase())
 | |
| 	review, err := GetReviewByID(1)
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.Equal(t, "Demo Review", review.Content)
 | |
| 	assert.Equal(t, ReviewTypeApprove, review.Type)
 | |
| 
 | |
| 	_, err = GetReviewByID(23892)
 | |
| 	assert.Error(t, err)
 | |
| 	assert.True(t, IsErrReviewNotExist(err), "IsErrReviewNotExist")
 | |
| }
 | |
| 
 | |
| func TestReview_LoadAttributes(t *testing.T) {
 | |
| 	assert.NoError(t, PrepareTestDatabase())
 | |
| 	review := AssertExistsAndLoadBean(t, &Review{ID: 1}).(*Review)
 | |
| 	assert.NoError(t, review.LoadAttributes())
 | |
| 	assert.NotNil(t, review.Issue)
 | |
| 	assert.NotNil(t, review.Reviewer)
 | |
| 
 | |
| 	invalidReview1 := AssertExistsAndLoadBean(t, &Review{ID: 2}).(*Review)
 | |
| 	assert.Error(t, invalidReview1.LoadAttributes())
 | |
| 
 | |
| 	invalidReview2 := AssertExistsAndLoadBean(t, &Review{ID: 3}).(*Review)
 | |
| 	assert.Error(t, invalidReview2.LoadAttributes())
 | |
| 
 | |
| }
 | |
| 
 | |
| func TestReview_LoadCodeComments(t *testing.T) {
 | |
| 	assert.NoError(t, PrepareTestDatabase())
 | |
| 
 | |
| 	review := AssertExistsAndLoadBean(t, &Review{ID: 4}).(*Review)
 | |
| 	assert.NoError(t, review.LoadAttributes())
 | |
| 	assert.NoError(t, review.LoadCodeComments())
 | |
| 	assert.Len(t, review.CodeComments, 1)
 | |
| 	assert.Equal(t, int64(4), review.CodeComments["README.md"][int64(4)][0].Line)
 | |
| }
 | |
| 
 | |
| func TestReviewType_Icon(t *testing.T) {
 | |
| 	assert.Equal(t, "eye", ReviewTypeApprove.Icon())
 | |
| 	assert.Equal(t, "x", ReviewTypeReject.Icon())
 | |
| 	assert.Equal(t, "comment", ReviewTypeComment.Icon())
 | |
| 	assert.Equal(t, "comment", ReviewTypeUnknown.Icon())
 | |
| 	assert.Equal(t, "comment", ReviewType(4).Icon())
 | |
| }
 | |
| 
 | |
| func TestFindReviews(t *testing.T) {
 | |
| 	assert.NoError(t, PrepareTestDatabase())
 | |
| 	reviews, err := FindReviews(FindReviewOptions{
 | |
| 		Type:       ReviewTypeApprove,
 | |
| 		IssueID:    2,
 | |
| 		ReviewerID: 1,
 | |
| 	})
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.Len(t, reviews, 1)
 | |
| 	assert.Equal(t, "Demo Review", reviews[0].Content)
 | |
| }
 | |
| 
 | |
| func TestGetCurrentReview(t *testing.T) {
 | |
| 	assert.NoError(t, PrepareTestDatabase())
 | |
| 	issue := AssertExistsAndLoadBean(t, &Issue{ID: 2}).(*Issue)
 | |
| 	user := AssertExistsAndLoadBean(t, &User{ID: 1}).(*User)
 | |
| 
 | |
| 	review, err := GetCurrentReview(user, issue)
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.NotNil(t, review)
 | |
| 	assert.Equal(t, ReviewTypePending, review.Type)
 | |
| 	assert.Equal(t, "Pending Review", review.Content)
 | |
| 
 | |
| 	user2 := AssertExistsAndLoadBean(t, &User{ID: 2}).(*User)
 | |
| 	review2, err := GetCurrentReview(user2, issue)
 | |
| 	assert.Error(t, err)
 | |
| 	assert.True(t, IsErrReviewNotExist(err))
 | |
| 	assert.Nil(t, review2)
 | |
| }
 | |
| 
 | |
| func TestCreateReview(t *testing.T) {
 | |
| 	assert.NoError(t, PrepareTestDatabase())
 | |
| 
 | |
| 	issue := AssertExistsAndLoadBean(t, &Issue{ID: 2}).(*Issue)
 | |
| 	user := AssertExistsAndLoadBean(t, &User{ID: 1}).(*User)
 | |
| 
 | |
| 	review, err := CreateReview(CreateReviewOptions{
 | |
| 		Content:  "New Review",
 | |
| 		Type:     ReviewTypePending,
 | |
| 		Issue:    issue,
 | |
| 		Reviewer: user,
 | |
| 	})
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.Equal(t, "New Review", review.Content)
 | |
| 	AssertExistsAndLoadBean(t, &Review{Content: "New Review"})
 | |
| }
 | |
| 
 | |
| func TestUpdateReview(t *testing.T) {
 | |
| 	assert.NoError(t, PrepareTestDatabase())
 | |
| 	review := AssertExistsAndLoadBean(t, &Review{ID: 1}).(*Review)
 | |
| 	review.Content = "Updated Review"
 | |
| 	assert.NoError(t, UpdateReview(review))
 | |
| 	AssertExistsAndLoadBean(t, &Review{ID: 1, Content: "Updated Review"})
 | |
| }
 |