@@ -122,4 +122,110 @@ func TestAPIPullReview(t *testing.T) {
122122 assert .EqualValues (t , 0 , review .CodeCommentsCount )
123123 req = NewRequestf (t , http .MethodDelete , "/api/v1/repos/%s/%s/pulls/%d/reviews/%d?token=%s" , repo .OwnerName , repo .Name , pullIssue .Index , review .ID , token )
124124 resp = session .MakeRequest (t , req , http .StatusNoContent )
125+
126+ // test get review requests
127+ // to make it simple, use same api with get review
128+ pullIssue12 := models .AssertExistsAndLoadBean (t , & models.Issue {ID : 12 }).(* models.Issue )
129+ assert .NoError (t , pullIssue12 .LoadAttributes ())
130+ repo3 := models .AssertExistsAndLoadBean (t , & models.Repository {ID : pullIssue12 .RepoID }).(* models.Repository )
131+
132+ req = NewRequestf (t , http .MethodGet , "/api/v1/repos/%s/%s/pulls/%d/reviews?token=%s" , repo3 .OwnerName , repo3 .Name , pullIssue12 .Index , token )
133+ resp = session .MakeRequest (t , req , http .StatusOK )
134+ DecodeJSON (t , resp , & reviews )
135+ assert .EqualValues (t , 11 , reviews [0 ].ID )
136+ assert .EqualValues (t , "REQUEST_REVIEW" , reviews [0 ].State )
137+ assert .EqualValues (t , 0 , reviews [0 ].CodeCommentsCount )
138+ assert .EqualValues (t , false , reviews [0 ].Stale )
139+ assert .EqualValues (t , true , reviews [0 ].Official )
140+ assert .EqualValues (t , "test_team" , reviews [0 ].ReviewerTeam .Name )
141+
142+ assert .EqualValues (t , 12 , reviews [1 ].ID )
143+ assert .EqualValues (t , "REQUEST_REVIEW" , reviews [1 ].State )
144+ assert .EqualValues (t , 0 , reviews [0 ].CodeCommentsCount )
145+ assert .EqualValues (t , false , reviews [1 ].Stale )
146+ assert .EqualValues (t , true , reviews [1 ].Official )
147+ assert .EqualValues (t , 1 , reviews [1 ].Reviewer .ID )
148+ }
149+
150+ func TestAPIPullReviewRequest (t * testing.T ) {
151+ defer prepareTestEnv (t )()
152+ pullIssue := models .AssertExistsAndLoadBean (t , & models.Issue {ID : 3 }).(* models.Issue )
153+ assert .NoError (t , pullIssue .LoadAttributes ())
154+ repo := models .AssertExistsAndLoadBean (t , & models.Repository {ID : pullIssue .RepoID }).(* models.Repository )
155+
156+ // Test add Review Request
157+ session := loginUser (t , "user2" )
158+ token := getTokenForLoggedInUser (t , session )
159+ req := NewRequestWithJSON (t , http .MethodPost , fmt .Sprintf ("/api/v1/repos/%s/%s/pulls/%d/requested_reviewers?token=%s" , repo .OwnerName , repo .Name , pullIssue .Index , token ), & api.PullReviewRequestOptions {
160+ Reviewers : []string {"user4@example.com" , "user8" },
161+ })
162+ session .MakeRequest (t , req , http .StatusCreated )
163+
164+ // poster of pr can't be reviewer
165+ req = NewRequestWithJSON (t , http .MethodPost , fmt .Sprintf ("/api/v1/repos/%s/%s/pulls/%d/requested_reviewers?token=%s" , repo .OwnerName , repo .Name , pullIssue .Index , token ), & api.PullReviewRequestOptions {
166+ Reviewers : []string {"user1" },
167+ })
168+ session .MakeRequest (t , req , http .StatusUnprocessableEntity )
169+
170+ // test user not exist
171+ req = NewRequestWithJSON (t , http .MethodPost , fmt .Sprintf ("/api/v1/repos/%s/%s/pulls/%d/requested_reviewers?token=%s" , repo .OwnerName , repo .Name , pullIssue .Index , token ), & api.PullReviewRequestOptions {
172+ Reviewers : []string {"testOther" },
173+ })
174+ session .MakeRequest (t , req , http .StatusNotFound )
175+
176+ // Test Remove Review Request
177+ session2 := loginUser (t , "user4" )
178+ token2 := getTokenForLoggedInUser (t , session2 )
179+
180+ req = NewRequestWithJSON (t , http .MethodDelete , fmt .Sprintf ("/api/v1/repos/%s/%s/pulls/%d/requested_reviewers?token=%s" , repo .OwnerName , repo .Name , pullIssue .Index , token2 ), & api.PullReviewRequestOptions {
181+ Reviewers : []string {"user4" },
182+ })
183+ session .MakeRequest (t , req , http .StatusNoContent )
184+
185+ // doer is not admin
186+ req = NewRequestWithJSON (t , http .MethodDelete , fmt .Sprintf ("/api/v1/repos/%s/%s/pulls/%d/requested_reviewers?token=%s" , repo .OwnerName , repo .Name , pullIssue .Index , token2 ), & api.PullReviewRequestOptions {
187+ Reviewers : []string {"user8" },
188+ })
189+ session .MakeRequest (t , req , http .StatusUnprocessableEntity )
190+
191+ req = NewRequestWithJSON (t , http .MethodDelete , fmt .Sprintf ("/api/v1/repos/%s/%s/pulls/%d/requested_reviewers?token=%s" , repo .OwnerName , repo .Name , pullIssue .Index , token ), & api.PullReviewRequestOptions {
192+ Reviewers : []string {"user8" },
193+ })
194+ session .MakeRequest (t , req , http .StatusNoContent )
195+
196+ // Test team review request
197+ pullIssue12 := models .AssertExistsAndLoadBean (t , & models.Issue {ID : 12 }).(* models.Issue )
198+ assert .NoError (t , pullIssue12 .LoadAttributes ())
199+ repo3 := models .AssertExistsAndLoadBean (t , & models.Repository {ID : pullIssue12 .RepoID }).(* models.Repository )
200+
201+ // Test add Team Review Request
202+ req = NewRequestWithJSON (t , http .MethodPost , fmt .Sprintf ("/api/v1/repos/%s/%s/pulls/%d/requested_reviewers?token=%s" , repo3 .OwnerName , repo3 .Name , pullIssue12 .Index , token ), & api.PullReviewRequestOptions {
203+ TeamReviewers : []string {"team1" , "owners" },
204+ })
205+ session .MakeRequest (t , req , http .StatusCreated )
206+
207+ // Test add Team Review Request to not allowned
208+ req = NewRequestWithJSON (t , http .MethodPost , fmt .Sprintf ("/api/v1/repos/%s/%s/pulls/%d/requested_reviewers?token=%s" , repo3 .OwnerName , repo3 .Name , pullIssue12 .Index , token ), & api.PullReviewRequestOptions {
209+ TeamReviewers : []string {"test_team" },
210+ })
211+ session .MakeRequest (t , req , http .StatusUnprocessableEntity )
212+
213+ // Test add Team Review Request to not exist
214+ req = NewRequestWithJSON (t , http .MethodPost , fmt .Sprintf ("/api/v1/repos/%s/%s/pulls/%d/requested_reviewers?token=%s" , repo3 .OwnerName , repo3 .Name , pullIssue12 .Index , token ), & api.PullReviewRequestOptions {
215+ TeamReviewers : []string {"not_exist_team" },
216+ })
217+ session .MakeRequest (t , req , http .StatusNotFound )
218+
219+ // Test Remove team Review Request
220+ req = NewRequestWithJSON (t , http .MethodDelete , fmt .Sprintf ("/api/v1/repos/%s/%s/pulls/%d/requested_reviewers?token=%s" , repo3 .OwnerName , repo3 .Name , pullIssue12 .Index , token ), & api.PullReviewRequestOptions {
221+ TeamReviewers : []string {"team1" },
222+ })
223+ session .MakeRequest (t , req , http .StatusNoContent )
224+
225+ // empty request test
226+ req = NewRequestWithJSON (t , http .MethodPost , fmt .Sprintf ("/api/v1/repos/%s/%s/pulls/%d/requested_reviewers?token=%s" , repo3 .OwnerName , repo3 .Name , pullIssue12 .Index , token ), & api.PullReviewRequestOptions {})
227+ session .MakeRequest (t , req , http .StatusCreated )
228+
229+ req = NewRequestWithJSON (t , http .MethodDelete , fmt .Sprintf ("/api/v1/repos/%s/%s/pulls/%d/requested_reviewers?token=%s" , repo3 .OwnerName , repo3 .Name , pullIssue12 .Index , token ), & api.PullReviewRequestOptions {})
230+ session .MakeRequest (t , req , http .StatusNoContent )
125231}
0 commit comments