@@ -50,7 +50,7 @@ func testAsyncClient(t *testing.T, status int, respBody string, rec *recordedReq
5050
5151func TestMergeStackAsync_Accepted (t * testing.T ) {
5252 var rec recordedRequest
53- body := `{"queued":true,"merged":false ,"details":{"message":"Merge request enqueued.","uuid":"u-1","merge_method":"squash","expected_head_sha":"abc"}}`
53+ body := `{"status":"pending" ,"details":{"message":"Merge request enqueued.","uuid":"u-1","merge_method":"squash","expected_head_sha":"abc"}}`
5454 c := testAsyncClient (t , http .StatusAccepted , body , & rec )
5555
5656 res , err := c .MergeStackAsync (42 , "squash" )
@@ -60,33 +60,32 @@ func TestMergeStackAsync_Accepted(t *testing.T) {
6060 assert .Equal (t , "/repos/o/r/pulls/42/merge-async" , rec .path )
6161 assert .JSONEq (t , `{"merge_method":"squash"}` , rec .body )
6262
63- assert .True (t , res .Queued )
64- assert .False (t , res .Merged )
63+ assert .True (t , res .IsPending () )
64+ assert .False (t , res .IsMerged () )
6565 assert .Equal (t , "u-1" , res .Details .UUID )
6666 assert .Equal (t , "squash" , res .Details .MergeMethod )
67- assert .True (t , res .InProgress ())
6867}
6968
7069func TestMergeStackAsync_AlreadyMerged (t * testing.T ) {
71- body := `{"queued":false, "merged":true ,"details":{"message":"Pull request is already merged.","sha":"deadbeef"}}`
70+ body := `{"status": "merged","details":{"message":"Pull request is already merged.","sha":"deadbeef"}}`
7271 res , err := testAsyncClient (t , http .StatusOK , body , nil ).MergeStackAsync (42 , "merge" )
7372 require .NoError (t , err )
74- assert .True (t , res .Merged )
73+ assert .True (t , res .IsMerged () )
7574 assert .Equal (t , "deadbeef" , res .Details .SHA )
7675}
7776
7877func TestMergeStackAsync_ExistingRequestConflict (t * testing.T ) {
7978 // The go-gh REST client discards the 409 body, so we can't recover the
8079 // existing UUID; the request surfaces as a clear "already exists" error.
81- _ , err := testAsyncClient (t , http .StatusConflict , `{"queued":true,"merged":false ,"details":{"uuid":"u-2"}}` , nil ).MergeStackAsync (42 , "merge" )
80+ _ , err := testAsyncClient (t , http .StatusConflict , `{"status":"pending" ,"details":{"uuid":"u-2"}}` , nil ).MergeStackAsync (42 , "merge" )
8281 require .Error (t , err )
8382 assert .Contains (t , err .Error (), "already exists" )
8483}
8584
8685func TestMergeStackAsync_NotMergeable (t * testing.T ) {
8786 // A 400 preflight failure is reported as a clear error (the specific
8887 // details.message isn't recoverable through the REST client).
89- _ , err := testAsyncClient (t , http .StatusBadRequest , `{"queued":false,"merged":false ,"details":{"message":"Pull request is closed."}}` , nil ).MergeStackAsync (42 , "merge" )
88+ _ , err := testAsyncClient (t , http .StatusBadRequest , `{"status":"failed" ,"details":{"message":"Pull request is closed."}}` , nil ).MergeStackAsync (42 , "merge" )
9089 require .Error (t , err )
9190 assert .Contains (t , err .Error (), "can no longer be merged" )
9291}
@@ -106,12 +105,11 @@ func TestGetAsyncMergeResult_States(t *testing.T) {
106105 tests := []struct {
107106 name string
108107 body string
109- wantQueued bool
110- wantMerged bool
108+ wantStatus string
111109 }{
112- {"pending" , `{"queued":true,"merged":false ,"details":{"message":"Merge request is in progress.","uuid":"u","merge_method":"merge","expected_head_sha":"abc"}}` , true , false },
113- {"merged" , `{"queued":false, "merged":true ,"details":{"message":"Pull request was merged.","sha":"abc"}}` , false , true },
114- {"failed" , `{"queued":false,"merged":false ,"details":{"message":"Merge conflict."}}` , false , false },
110+ {"pending" , `{"status":"pending" ,"details":{"message":"Merge request is in progress.","uuid":"u","merge_method":"merge","expected_head_sha":"abc"}}` , AsyncMergeStatusPending },
111+ {"merged" , `{"status": "merged","details":{"message":"Pull request was merged.","sha":"abc"}}` , AsyncMergeStatusMerged },
112+ {"failed" , `{"status":"failed" ,"details":{"message":"Merge conflict."}}` , AsyncMergeStatusFailed },
115113 }
116114 for _ , tt := range tests {
117115 t .Run (tt .name , func (t * testing.T ) {
@@ -120,8 +118,7 @@ func TestGetAsyncMergeResult_States(t *testing.T) {
120118 require .NoError (t , err )
121119 assert .Equal (t , http .MethodGet , rec .method )
122120 assert .Equal (t , "/repos/o/r/pulls/42/merge-async/u" , rec .path )
123- assert .Equal (t , tt .wantQueued , res .Queued )
124- assert .Equal (t , tt .wantMerged , res .Merged )
121+ assert .Equal (t , tt .wantStatus , res .Status )
125122 })
126123 }
127124}
@@ -150,12 +147,24 @@ func TestRepoMergeConfig_AllowedMethods(t *testing.T) {
150147 assert .Empty (t , empty .AllowedMethods ())
151148}
152149
153- func TestAsyncMergeResult_InProgress (t * testing.T ) {
154- assert .True (t , (& AsyncMergeResult {Queued : true }).InProgress ())
155- assert .False (t , (& AsyncMergeResult {Queued : true , Merged : true }).InProgress ())
156- assert .False (t , (& AsyncMergeResult {}).InProgress ())
150+ func TestAsyncMergeResult_Status (t * testing.T ) {
151+ pending := & AsyncMergeResult {Status : AsyncMergeStatusPending }
152+ assert .True (t , pending .IsPending ())
153+ assert .False (t , pending .IsMerged ())
154+ assert .False (t , pending .IsFailed ())
155+
156+ merged := & AsyncMergeResult {Status : AsyncMergeStatusMerged }
157+ assert .True (t , merged .IsMerged ())
158+ assert .False (t , merged .IsPending ())
159+
160+ failed := & AsyncMergeResult {Status : AsyncMergeStatusFailed }
161+ assert .True (t , failed .IsFailed ())
162+ assert .False (t , failed .IsMerged ())
163+
157164 var nilRes * AsyncMergeResult
158- assert .False (t , nilRes .InProgress ())
165+ assert .False (t , nilRes .IsPending ())
166+ assert .False (t , nilRes .IsMerged ())
167+ assert .False (t , nilRes .IsFailed ())
159168}
160169
161170// sanity check that the submit body omits merge_method when empty.
0 commit comments