11package github
22
33import (
4+ "bytes"
45 "context"
56 "encoding/json"
7+ "io"
68 "net/http"
79 "strings"
810 "sync/atomic"
@@ -19,6 +21,31 @@ import (
1921 "github.com/stretchr/testify/require"
2022)
2123
24+ type captureGraphQLTransport struct {
25+ response string
26+ variables map [string ]any
27+ }
28+
29+ func (t * captureGraphQLTransport ) RoundTrip (req * http.Request ) (* http.Response , error ) {
30+ body , err := io .ReadAll (req .Body )
31+ if err != nil {
32+ return nil , err
33+ }
34+ var request struct {
35+ Variables map [string ]any `json:"variables"`
36+ }
37+ if err := json .Unmarshal (body , & request ); err != nil {
38+ return nil , err
39+ }
40+ t .variables = request .Variables
41+ return & http.Response {
42+ StatusCode : http .StatusOK ,
43+ Header : make (http.Header ),
44+ Body : io .NopCloser (bytes .NewBufferString (t .response )),
45+ Request : req ,
46+ }, nil
47+ }
48+
2249func Test_GetPullRequest (t * testing.T ) {
2350 // Verify tool definition once
2451 serverTool := PullRequestRead (translations .NullTranslationHelper )
@@ -4877,3 +4904,19 @@ func TestResolveReviewThread(t *testing.T) {
48774904 })
48784905 }
48794906}
4907+
4908+ func TestResolveReviewThreadWithoutReasonOmitsOptionalInputField (t * testing.T ) {
4909+ transport := & captureGraphQLTransport {
4910+ response : `{"data":{"resolveReviewThread":{"thread":{"id":"PRRT_test","isResolved":true}}}}` ,
4911+ }
4912+ client := githubv4 .NewClient (& http.Client {Transport : transport })
4913+
4914+ result , err := ResolveReviewThread (context .Background (), client , "PRRT_test" , true )
4915+ require .NoError (t , err )
4916+ require .False (t , result .IsError )
4917+ require .NotNil (t , transport .variables )
4918+ input , ok := transport .variables ["input" ].(map [string ]any )
4919+ require .True (t , ok )
4920+ assert .Equal (t , "PRRT_test" , input ["threadId" ])
4921+ assert .NotContains (t , input , "resolutionReason" )
4922+ }
0 commit comments