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 7.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  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. "code.gitea.io/gitea/models/unittest"
  8. user_model "code.gitea.io/gitea/models/user"
  9. "github.com/stretchr/testify/assert"
  10. )
  11. func TestGetReviewByID(t *testing.T) {
  12. assert.NoError(t, unittest.PrepareTestDatabase())
  13. review, err := GetReviewByID(1)
  14. assert.NoError(t, err)
  15. assert.Equal(t, "Demo Review", review.Content)
  16. assert.Equal(t, ReviewTypeApprove, review.Type)
  17. _, err = GetReviewByID(23892)
  18. assert.Error(t, err)
  19. assert.True(t, IsErrReviewNotExist(err), "IsErrReviewNotExist")
  20. }
  21. func TestReview_LoadAttributes(t *testing.T) {
  22. assert.NoError(t, unittest.PrepareTestDatabase())
  23. review := unittest.AssertExistsAndLoadBean(t, &Review{ID: 1}).(*Review)
  24. assert.NoError(t, review.LoadAttributes())
  25. assert.NotNil(t, review.Issue)
  26. assert.NotNil(t, review.Reviewer)
  27. invalidReview1 := unittest.AssertExistsAndLoadBean(t, &Review{ID: 2}).(*Review)
  28. assert.Error(t, invalidReview1.LoadAttributes())
  29. invalidReview2 := unittest.AssertExistsAndLoadBean(t, &Review{ID: 3}).(*Review)
  30. assert.Error(t, invalidReview2.LoadAttributes())
  31. }
  32. func TestReview_LoadCodeComments(t *testing.T) {
  33. assert.NoError(t, unittest.PrepareTestDatabase())
  34. review := unittest.AssertExistsAndLoadBean(t, &Review{ID: 4}).(*Review)
  35. assert.NoError(t, review.LoadAttributes())
  36. assert.NoError(t, review.LoadCodeComments())
  37. assert.Len(t, review.CodeComments, 1)
  38. assert.Equal(t, int64(4), review.CodeComments["README.md"][int64(4)][0].Line)
  39. }
  40. func TestReviewType_Icon(t *testing.T) {
  41. assert.Equal(t, "check", ReviewTypeApprove.Icon())
  42. assert.Equal(t, "diff", ReviewTypeReject.Icon())
  43. assert.Equal(t, "comment", ReviewTypeComment.Icon())
  44. assert.Equal(t, "comment", ReviewTypeUnknown.Icon())
  45. assert.Equal(t, "dot-fill", ReviewTypeRequest.Icon())
  46. assert.Equal(t, "comment", ReviewType(6).Icon())
  47. }
  48. func TestFindReviews(t *testing.T) {
  49. assert.NoError(t, unittest.PrepareTestDatabase())
  50. reviews, err := FindReviews(FindReviewOptions{
  51. Type: ReviewTypeApprove,
  52. IssueID: 2,
  53. ReviewerID: 1,
  54. })
  55. assert.NoError(t, err)
  56. assert.Len(t, reviews, 1)
  57. assert.Equal(t, "Demo Review", reviews[0].Content)
  58. }
  59. func TestGetCurrentReview(t *testing.T) {
  60. assert.NoError(t, unittest.PrepareTestDatabase())
  61. issue := unittest.AssertExistsAndLoadBean(t, &Issue{ID: 2}).(*Issue)
  62. user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}).(*user_model.User)
  63. review, err := GetCurrentReview(user, issue)
  64. assert.NoError(t, err)
  65. assert.NotNil(t, review)
  66. assert.Equal(t, ReviewTypePending, review.Type)
  67. assert.Equal(t, "Pending Review", review.Content)
  68. user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 7}).(*user_model.User)
  69. review2, err := GetCurrentReview(user2, issue)
  70. assert.Error(t, err)
  71. assert.True(t, IsErrReviewNotExist(err))
  72. assert.Nil(t, review2)
  73. }
  74. func TestCreateReview(t *testing.T) {
  75. assert.NoError(t, unittest.PrepareTestDatabase())
  76. issue := unittest.AssertExistsAndLoadBean(t, &Issue{ID: 2}).(*Issue)
  77. user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}).(*user_model.User)
  78. review, err := CreateReview(CreateReviewOptions{
  79. Content: "New Review",
  80. Type: ReviewTypePending,
  81. Issue: issue,
  82. Reviewer: user,
  83. })
  84. assert.NoError(t, err)
  85. assert.Equal(t, "New Review", review.Content)
  86. unittest.AssertExistsAndLoadBean(t, &Review{Content: "New Review"})
  87. }
  88. func TestGetReviewersByIssueID(t *testing.T) {
  89. assert.NoError(t, unittest.PrepareTestDatabase())
  90. issue := unittest.AssertExistsAndLoadBean(t, &Issue{ID: 3}).(*Issue)
  91. user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}).(*user_model.User)
  92. user3 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 3}).(*user_model.User)
  93. user4 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 4}).(*user_model.User)
  94. expectedReviews := []*Review{}
  95. expectedReviews = append(expectedReviews,
  96. &Review{
  97. Reviewer: user3,
  98. Type: ReviewTypeReject,
  99. UpdatedUnix: 946684812,
  100. },
  101. &Review{
  102. Reviewer: user4,
  103. Type: ReviewTypeApprove,
  104. UpdatedUnix: 946684813,
  105. },
  106. &Review{
  107. Reviewer: user2,
  108. Type: ReviewTypeReject,
  109. UpdatedUnix: 946684814,
  110. })
  111. allReviews, err := GetReviewersByIssueID(issue.ID)
  112. for _, reviewer := range allReviews {
  113. assert.NoError(t, reviewer.LoadReviewer())
  114. }
  115. assert.NoError(t, err)
  116. if assert.Len(t, allReviews, 3) {
  117. for i, review := range allReviews {
  118. assert.Equal(t, expectedReviews[i].Reviewer, review.Reviewer)
  119. assert.Equal(t, expectedReviews[i].Type, review.Type)
  120. assert.Equal(t, expectedReviews[i].UpdatedUnix, review.UpdatedUnix)
  121. }
  122. }
  123. }
  124. func TestDismissReview(t *testing.T) {
  125. assert.NoError(t, unittest.PrepareTestDatabase())
  126. rejectReviewExample := unittest.AssertExistsAndLoadBean(t, &Review{ID: 9}).(*Review)
  127. requestReviewExample := unittest.AssertExistsAndLoadBean(t, &Review{ID: 11}).(*Review)
  128. approveReviewExample := unittest.AssertExistsAndLoadBean(t, &Review{ID: 8}).(*Review)
  129. assert.False(t, rejectReviewExample.Dismissed)
  130. assert.False(t, requestReviewExample.Dismissed)
  131. assert.False(t, approveReviewExample.Dismissed)
  132. assert.NoError(t, DismissReview(rejectReviewExample, true))
  133. rejectReviewExample = unittest.AssertExistsAndLoadBean(t, &Review{ID: 9}).(*Review)
  134. requestReviewExample = unittest.AssertExistsAndLoadBean(t, &Review{ID: 11}).(*Review)
  135. assert.True(t, rejectReviewExample.Dismissed)
  136. assert.False(t, requestReviewExample.Dismissed)
  137. assert.NoError(t, DismissReview(requestReviewExample, true))
  138. rejectReviewExample = unittest.AssertExistsAndLoadBean(t, &Review{ID: 9}).(*Review)
  139. requestReviewExample = unittest.AssertExistsAndLoadBean(t, &Review{ID: 11}).(*Review)
  140. assert.True(t, rejectReviewExample.Dismissed)
  141. assert.False(t, requestReviewExample.Dismissed)
  142. assert.False(t, approveReviewExample.Dismissed)
  143. assert.NoError(t, DismissReview(requestReviewExample, true))
  144. rejectReviewExample = unittest.AssertExistsAndLoadBean(t, &Review{ID: 9}).(*Review)
  145. requestReviewExample = unittest.AssertExistsAndLoadBean(t, &Review{ID: 11}).(*Review)
  146. assert.True(t, rejectReviewExample.Dismissed)
  147. assert.False(t, requestReviewExample.Dismissed)
  148. assert.False(t, approveReviewExample.Dismissed)
  149. assert.NoError(t, DismissReview(requestReviewExample, false))
  150. rejectReviewExample = unittest.AssertExistsAndLoadBean(t, &Review{ID: 9}).(*Review)
  151. requestReviewExample = unittest.AssertExistsAndLoadBean(t, &Review{ID: 11}).(*Review)
  152. assert.True(t, rejectReviewExample.Dismissed)
  153. assert.False(t, requestReviewExample.Dismissed)
  154. assert.False(t, approveReviewExample.Dismissed)
  155. assert.NoError(t, DismissReview(requestReviewExample, false))
  156. rejectReviewExample = unittest.AssertExistsAndLoadBean(t, &Review{ID: 9}).(*Review)
  157. requestReviewExample = unittest.AssertExistsAndLoadBean(t, &Review{ID: 11}).(*Review)
  158. assert.True(t, rejectReviewExample.Dismissed)
  159. assert.False(t, requestReviewExample.Dismissed)
  160. assert.False(t, approveReviewExample.Dismissed)
  161. assert.NoError(t, DismissReview(rejectReviewExample, false))
  162. assert.False(t, rejectReviewExample.Dismissed)
  163. assert.False(t, requestReviewExample.Dismissed)
  164. assert.False(t, approveReviewExample.Dismissed)
  165. assert.NoError(t, DismissReview(approveReviewExample, true))
  166. assert.False(t, rejectReviewExample.Dismissed)
  167. assert.False(t, requestReviewExample.Dismissed)
  168. assert.True(t, approveReviewExample.Dismissed)
  169. }