@@ -122,4 +122,110 @@ func TestAPIPullReview(t *testing.T) {
122
122
assert .EqualValues (t , 0 , review .CodeCommentsCount )
123
123
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 )
124
124
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 {
"[email protected] " ,
"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 )
125
231
}
0 commit comments