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.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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, "comment", ReviewType(4).Icon())
  44. }
  45. func TestFindReviews(t *testing.T) {
  46. assert.NoError(t, PrepareTestDatabase())
  47. reviews, err := FindReviews(FindReviewOptions{
  48. Type: ReviewTypeApprove,
  49. IssueID: 2,
  50. ReviewerID: 1,
  51. })
  52. assert.NoError(t, err)
  53. assert.Len(t, reviews, 1)
  54. assert.Equal(t, "Demo Review", reviews[0].Content)
  55. }
  56. func TestGetCurrentReview(t *testing.T) {
  57. assert.NoError(t, PrepareTestDatabase())
  58. issue := AssertExistsAndLoadBean(t, &Issue{ID: 2}).(*Issue)
  59. user := AssertExistsAndLoadBean(t, &User{ID: 1}).(*User)
  60. review, err := GetCurrentReview(user, issue)
  61. assert.NoError(t, err)
  62. assert.NotNil(t, review)
  63. assert.Equal(t, ReviewTypePending, review.Type)
  64. assert.Equal(t, "Pending Review", review.Content)
  65. user2 := AssertExistsAndLoadBean(t, &User{ID: 7}).(*User)
  66. review2, err := GetCurrentReview(user2, issue)
  67. assert.Error(t, err)
  68. assert.True(t, IsErrReviewNotExist(err))
  69. assert.Nil(t, review2)
  70. }
  71. func TestCreateReview(t *testing.T) {
  72. assert.NoError(t, PrepareTestDatabase())
  73. issue := AssertExistsAndLoadBean(t, &Issue{ID: 2}).(*Issue)
  74. user := AssertExistsAndLoadBean(t, &User{ID: 1}).(*User)
  75. review, err := CreateReview(CreateReviewOptions{
  76. Content: "New Review",
  77. Type: ReviewTypePending,
  78. Issue: issue,
  79. Reviewer: user,
  80. })
  81. assert.NoError(t, err)
  82. assert.Equal(t, "New Review", review.Content)
  83. AssertExistsAndLoadBean(t, &Review{Content: "New Review"})
  84. }
  85. func TestGetReviewersByIssueID(t *testing.T) {
  86. assert.NoError(t, PrepareTestDatabase())
  87. issue := AssertExistsAndLoadBean(t, &Issue{ID: 3}).(*Issue)
  88. user2 := AssertExistsAndLoadBean(t, &User{ID: 2}).(*User)
  89. user3 := AssertExistsAndLoadBean(t, &User{ID: 3}).(*User)
  90. user4 := AssertExistsAndLoadBean(t, &User{ID: 4}).(*User)
  91. expectedReviews := []*Review{}
  92. expectedReviews = append(expectedReviews,
  93. &Review{
  94. Reviewer: user3,
  95. Type: ReviewTypeReject,
  96. UpdatedUnix: 946684812,
  97. },
  98. &Review{
  99. Reviewer: user4,
  100. Type: ReviewTypeApprove,
  101. UpdatedUnix: 946684813,
  102. },
  103. &Review{
  104. Reviewer: user2,
  105. Type: ReviewTypeReject,
  106. UpdatedUnix: 946684814,
  107. })
  108. allReviews, err := GetReviewersByIssueID(issue.ID)
  109. assert.NoError(t, err)
  110. for i, review := range allReviews {
  111. assert.Equal(t, expectedReviews[i].Reviewer, review.Reviewer)
  112. assert.Equal(t, expectedReviews[i].Type, review.Type)
  113. assert.Equal(t, expectedReviews[i].UpdatedUnix, review.UpdatedUnix)
  114. }
  115. }