mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +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>
		
	
		
			
				
	
	
		
			142 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			142 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package models
 | |
| 
 | |
| import (
 | |
| 	"html/template"
 | |
| 	"strings"
 | |
| 	"testing"
 | |
| 
 | |
| 	dmp "github.com/sergi/go-diff/diffmatchpatch"
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| func assertEqual(t *testing.T, s1 string, s2 template.HTML) {
 | |
| 	if s1 != string(s2) {
 | |
| 		t.Errorf("%s should be equal %s", s2, s1)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func assertLineEqual(t *testing.T, d1 *DiffLine, d2 *DiffLine) {
 | |
| 	if d1 != d2 {
 | |
| 		t.Errorf("%v should be equal %v", d1, d2)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestDiffToHTML(t *testing.T) {
 | |
| 	assertEqual(t, "+foo <span class=\"added-code\">bar</span> biz", diffToHTML([]dmp.Diff{
 | |
| 		{Type: dmp.DiffEqual, Text: "foo "},
 | |
| 		{Type: dmp.DiffInsert, Text: "bar"},
 | |
| 		{Type: dmp.DiffDelete, Text: " baz"},
 | |
| 		{Type: dmp.DiffEqual, Text: " biz"},
 | |
| 	}, DiffLineAdd))
 | |
| 
 | |
| 	assertEqual(t, "-foo <span class=\"removed-code\">bar</span> biz", diffToHTML([]dmp.Diff{
 | |
| 		{Type: dmp.DiffEqual, Text: "foo "},
 | |
| 		{Type: dmp.DiffDelete, Text: "bar"},
 | |
| 		{Type: dmp.DiffInsert, Text: " baz"},
 | |
| 		{Type: dmp.DiffEqual, Text: " biz"},
 | |
| 	}, DiffLineDel))
 | |
| }
 | |
| 
 | |
| const exampleDiff = `diff --git a/README.md b/README.md
 | |
| --- a/README.md
 | |
| +++ b/README.md
 | |
| @@ -1,3 +1,6 @@
 | |
|  # gitea-github-migrator
 | |
| +
 | |
| + Build Status
 | |
| - Latest Release
 | |
|  Docker Pulls
 | |
| + cut off
 | |
| + cut off`
 | |
| 
 | |
| func TestCutDiffAroundLine(t *testing.T) {
 | |
| 	result := CutDiffAroundLine(strings.NewReader(exampleDiff), 4, false, 3)
 | |
| 	resultByLine := strings.Split(result, "\n")
 | |
| 	assert.Len(t, resultByLine, 7)
 | |
| 	// Check if headers got transferred
 | |
| 	assert.Equal(t, "diff --git a/README.md b/README.md", resultByLine[0])
 | |
| 	assert.Equal(t, "--- a/README.md", resultByLine[1])
 | |
| 	assert.Equal(t, "+++ b/README.md", resultByLine[2])
 | |
| 	// Check if hunk header is calculated correctly
 | |
| 	assert.Equal(t, "@@ -2,2 +3,2 @@", resultByLine[3])
 | |
| 	// Check if line got transferred
 | |
| 	assert.Equal(t, "+ Build Status", resultByLine[4])
 | |
| 
 | |
| 	// Must be same result as before since old line 3 == new line 5
 | |
| 	newResult := CutDiffAroundLine(strings.NewReader(exampleDiff), 3, true, 3)
 | |
| 	assert.Equal(t, result, newResult, "Must be same result as before since old line 3 == new line 5")
 | |
| 
 | |
| 	newResult = CutDiffAroundLine(strings.NewReader(exampleDiff), 6, false, 300)
 | |
| 	assert.Equal(t, exampleDiff, newResult)
 | |
| 
 | |
| 	emptyResult := CutDiffAroundLine(strings.NewReader(exampleDiff), 6, false, 0)
 | |
| 	assert.Empty(t, emptyResult)
 | |
| 
 | |
| 	// Line is out of scope
 | |
| 	emptyResult = CutDiffAroundLine(strings.NewReader(exampleDiff), 434, false, 0)
 | |
| 	assert.Empty(t, emptyResult)
 | |
| }
 | |
| 
 | |
| func BenchmarkCutDiffAroundLine(b *testing.B) {
 | |
| 	for n := 0; n < b.N; n++ {
 | |
| 		CutDiffAroundLine(strings.NewReader(exampleDiff), 3, true, 3)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func ExampleCutDiffAroundLine() {
 | |
| 	const diff = `diff --git a/README.md b/README.md
 | |
| --- a/README.md
 | |
| +++ b/README.md
 | |
| @@ -1,3 +1,6 @@
 | |
|  # gitea-github-migrator
 | |
| +
 | |
| + Build Status
 | |
| - Latest Release
 | |
|  Docker Pulls
 | |
| + cut off
 | |
| + cut off`
 | |
| 	result := CutDiffAroundLine(strings.NewReader(diff), 4, false, 3)
 | |
| 	println(result)
 | |
| }
 | |
| 
 | |
| func setupDefaultDiff() *Diff {
 | |
| 	return &Diff{
 | |
| 		Files: []*DiffFile{
 | |
| 			{
 | |
| 				Name: "README.md",
 | |
| 				Sections: []*DiffSection{
 | |
| 					{
 | |
| 						Lines: []*DiffLine{
 | |
| 							{
 | |
| 								LeftIdx:  4,
 | |
| 								RightIdx: 4,
 | |
| 							},
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 		},
 | |
| 	}
 | |
| }
 | |
| func TestDiff_LoadComments(t *testing.T) {
 | |
| 	issue := AssertExistsAndLoadBean(t, &Issue{ID: 2}).(*Issue)
 | |
| 	user := AssertExistsAndLoadBean(t, &User{ID: 1}).(*User)
 | |
| 	diff := setupDefaultDiff()
 | |
| 	assert.NoError(t, PrepareTestDatabase())
 | |
| 	assert.NoError(t, diff.LoadComments(issue, user))
 | |
| 	assert.Len(t, diff.Files[0].Sections[0].Lines[0].Comments, 2)
 | |
| }
 | |
| 
 | |
| func TestDiffLine_CanComment(t *testing.T) {
 | |
| 	assert.False(t, (&DiffLine{Type: DiffLineSection}).CanComment())
 | |
| 	assert.False(t, (&DiffLine{Type: DiffLineAdd, Comments: []*Comment{{Content: "bla"}}}).CanComment())
 | |
| 	assert.True(t, (&DiffLine{Type: DiffLineAdd}).CanComment())
 | |
| 	assert.True(t, (&DiffLine{Type: DiffLineDel}).CanComment())
 | |
| 	assert.True(t, (&DiffLine{Type: DiffLinePlain}).CanComment())
 | |
| }
 | |
| 
 | |
| func TestDiffLine_GetCommentSide(t *testing.T) {
 | |
| 	assert.Equal(t, "previous", (&DiffLine{Comments: []*Comment{{Line: -3}}}).GetCommentSide())
 | |
| 	assert.Equal(t, "proposed", (&DiffLine{Comments: []*Comment{{Line: 3}}}).GetCommentSide())
 | |
| }
 |