You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

review_test.go 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. // Copyright 2020 The Gitea Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package models
  5. import (
  6. "testing"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. func TestGetReviewByID(t *testing.T) {
  10. assert.NoError(t, PrepareTestDatabase())
  11. review, err := GetReviewByID(1)
  12. assert.NoError(t, err)
  13. assert.Equal(t, "Demo Review", review.Content)
  14. assert.Equal(t, ReviewTypeApprove, review.Type)
  15. _, err = GetReviewByID(23892)
  16. assert.Error(t, err)
  17. assert.True(t, IsErrReviewNotExist(err), "IsErrReviewNotExist")
  18. }
  19. func TestReview_LoadAttributes(t *testing.T) {
  20. assert.NoError(t, PrepareTestDatabase())
  21. review := AssertExistsAndLoadBean(t, &Review{ID: 1}).(*Review)
  22. assert.NoError(t, review.LoadAttributes())
  23. assert.NotNil(t, review.Issue)
  24. assert.NotNil(t, review.Reviewer)
  25. invalidReview1 := AssertExistsAndLoadBean(t, &Review{ID: 2}).(*Review)
  26. assert.Error(t, invalidReview1.LoadAttributes())
  27. invalidReview2 := AssertExistsAndLoadBean(t, &Review{ID: 3}).(*Review)
  28. assert.Error(t, invalidReview2.LoadAttributes())
  29. }
  30. func TestReview_LoadCodeComments(t *testing.T) {
  31. assert.NoError(t, PrepareTestDatabase())
  32. review := AssertExistsAndLoadBean(t, &Review{ID: 4}).(*Review)
  33. assert.NoError(t, review.LoadAttributes())
  34. assert.NoError(t, review.LoadCodeComments())
  35. assert.Len(t, review.CodeComments, 1)
  36. assert.Equal(t, int64(4), review.CodeComments["README.md"][int64(4)][0].Line)
  37. }
  38. func TestReviewType_Icon(t *testing.T) {
  39. assert.Equal(t, "check", ReviewTypeApprove.Icon())
  40. assert.Equal(t, "request-changes", ReviewTypeReject.Icon())
  41. assert.Equal(t, "comment", ReviewTypeComment.Icon())
  42. assert.Equal(t, "comment", ReviewTypeUnknown.Icon())
  43. assert.Equal(t, "primitive-dot", ReviewTypeRequest.Icon())
  44. assert.Equal(t, "comment", ReviewType(6).Icon())
  45. }
  46. func TestFindReviews(t *testing.T) {
  47. assert.NoError(t, PrepareTestDatabase())
  48. reviews, err := FindReviews(FindReviewOptions{
  49. Type: ReviewTypeApprove,
  50. IssueID: 2,
  51. ReviewerID: 1,
  52. })
  53. assert.NoError(t, err)
  54. assert.Len(t, reviews, 1)
  55. assert.Equal(t, "Demo Review", reviews[0].Content)
  56. }
  57. func TestGetCurrentReview(t *testing.T) {
  58. assert.NoError(t, PrepareTestDatabase())
  59. issue := AssertExistsAndLoadBean(t, &Issue{ID: 2}).(*Issue)
  60. user := AssertExistsAndLoadBean(t, &User{ID: 1}).(*User)
  61. review, err := GetCurrentReview(user, issue)
  62. assert.NoError(t, err)
  63. assert.NotNil(t, review)
  64. assert.Equal(t, ReviewTypePending, review.Type)
  65. assert.Equal(t, "Pending Review", review.Content)
  66. user2 := AssertExistsAndLoadBean(t, &User{ID: 7}).(*User)
  67. review2, err := GetCurrentReview(user2, issue)
  68. assert.Error(t, err)
  69. assert.True(t, IsErrReviewNotExist(err))
  70. assert.Nil(t, review2)
  71. }
  72. func TestCreateReview(t *testing.T) {
  73. assert.NoError(t, PrepareTestDatabase())
  74. issue := AssertExistsAndLoadBean(t, &Issue{ID: 2}).(*Issue)
  75. user := AssertExistsAndLoadBean(t, &User{ID: 1}).(*User)
  76. review, err := CreateReview(CreateReviewOptions{
  77. Content: "New Review",
  78. Type: ReviewTypePending,
  79. Issue: issue,
  80. Reviewer: user,
  81. })
  82. assert.NoError(t, err)
  83. assert.Equal(t, "New Review", review.Content)
  84. AssertExistsAndLoadBean(t, &Review{Content: "New Review"})
  85. }
  86. func TestGetReviewersByIssueID(t *testing.T) {
  87. assert.NoError(t, PrepareTestDatabase())
  88. issue := AssertExistsAndLoadBean(t, &Issue{ID: 3}).(*Issue)
  89. user2 := AssertExistsAndLoadBean(t, &User{ID: 2}).(*User)
  90. user3 := AssertExistsAndLoadBean(t, &User{ID: 3}).(*User)
  91. user4 := AssertExistsAndLoadBean(t, &User{ID: 4}).(*User)
  92. expectedReviews := []*Review{}
  93. expectedReviews = append(expectedReviews,
  94. &Review{
  95. Reviewer: user3,
  96. Type: ReviewTypeReject,
  97. UpdatedUnix: 946684812,
  98. },
  99. &Review{
  100. Reviewer: user4,
  101. Type: ReviewTypeApprove,
  102. UpdatedUnix: 946684813,
  103. },
  104. &Review{
  105. Reviewer: user2,
  106. Type: ReviewTypeReject,
  107. UpdatedUnix: 946684814,
  108. })
  109. allReviews, err := GetReviewersByIssueID(issue.ID)
  110. assert.NoError(t, err)
  111. if assert.Len(t, allReviews, 3) {
  112. for i, review := range allReviews {
  113. assert.Equal(t, expectedReviews[i].Reviewer, review.Reviewer)
  114. assert.Equal(t, expectedReviews[i].Type, review.Type)
  115. assert.Equal(t, expectedReviews[i].UpdatedUnix, review.UpdatedUnix)
  116. }
  117. }
  118. }