@@ -8,6 +8,7 @@ package github
8
8
import (
9
9
"encoding/json"
10
10
"fmt"
11
+ "io"
11
12
"net/http"
12
13
"reflect"
13
14
"strings"
@@ -235,28 +236,58 @@ func TestPullRequestsService_Edit(t *testing.T) {
235
236
setup ()
236
237
defer teardown ()
237
238
238
- input := & PullRequest {Title : String ("t" )}
239
+ tests := []struct {
240
+ input * PullRequest
241
+ sendResponse string
239
242
240
- mux .HandleFunc ("/repos/o/r/pulls/1" , func (w http.ResponseWriter , r * http.Request ) {
241
- v := new (PullRequest )
242
- json .NewDecoder (r .Body ).Decode (v )
243
+ wantUpdate string
244
+ want * PullRequest
245
+ }{
246
+ {
247
+ input : & PullRequest {Title : String ("t" )},
248
+ sendResponse : `{"number":1}` ,
249
+ wantUpdate : `{"title":"t"}` ,
250
+ want : & PullRequest {Number : Int (1 )},
251
+ },
252
+ {
253
+ // nil request
254
+ sendResponse : `{}` ,
255
+ wantUpdate : `{}` ,
256
+ want : & PullRequest {},
257
+ },
258
+ {
259
+ // base update
260
+ input : & PullRequest {Base : & PullRequestBranch {Ref : String ("master" )}},
261
+ sendResponse : `{"number":1,"base":{"ref":"master"}}` ,
262
+ wantUpdate : `{"base":"master"}` ,
263
+ want : & PullRequest {
264
+ Number : Int (1 ),
265
+ Base : & PullRequestBranch {Ref : String ("master" )},
266
+ },
267
+ },
268
+ }
243
269
244
- testMethod (t , r , "PATCH" )
245
- if ! reflect .DeepEqual (v , input ) {
246
- t .Errorf ("Request body = %+v, want %+v" , v , input )
247
- }
270
+ for i , tt := range tests {
271
+ madeRequest := false
272
+ mux .HandleFunc (fmt .Sprintf ("/repos/o/r/pulls/%v" , i ), func (w http.ResponseWriter , r * http.Request ) {
273
+ testMethod (t , r , "PATCH" )
274
+ testBody (t , r , tt .wantUpdate + "\n " )
275
+ io .WriteString (w , tt .sendResponse )
276
+ madeRequest = true
277
+ })
248
278
249
- fmt .Fprint (w , `{"number":1}` )
250
- })
279
+ pull , _ , err := client .PullRequests .Edit ("o" , "r" , i , tt .input )
280
+ if err != nil {
281
+ t .Errorf ("%d: PullRequests.Edit returned error: %v" , i , err )
282
+ }
251
283
252
- pull , _ , err := client .PullRequests .Edit ("o" , "r" , 1 , input )
253
- if err != nil {
254
- t .Errorf ("PullRequests.Edit returned error: %v" , err )
255
- }
284
+ if ! reflect .DeepEqual (pull , tt .want ) {
285
+ t .Errorf ("%d: PullRequests.Edit returned %+v, want %+v" , i , pull , tt .want )
286
+ }
256
287
257
- want := & PullRequest { Number : Int ( 1 )}
258
- if ! reflect . DeepEqual ( pull , want ) {
259
- t . Errorf ( "PullRequests.Edit returned %+v, want %+v" , pull , want )
288
+ if ! madeRequest {
289
+ t . Errorf ( "%d: PullRequest.Edit did not make the expected request" , i )
290
+ }
260
291
}
261
292
}
262
293
0 commit comments