mirror of
https://github.com/go-gitea/gitea.git
synced 2024-11-24 10:37:59 +08:00
6e64f9db8e
* 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"})
|
|
}
|