@@ -1242,20 +1242,45 @@ func Test_GetPullRequestFiles(t *testing.T) {
12421242 require .NoError (t , err )
12431243 require .False (t , result .IsError )
12441244
1245- // Parse the result and get the text content if no error
1246- textContent := getTextResult (t , result )
1245+ // Verify multi-content response
1246+ assert .NotNil (t , result )
1247+ require .Len (t , result .Content , 3 ) // 1 metadata + 2 patches
12471248
1248- // Unmarshal and verify the result
1249- var returnedFiles []MinimalPRFile
1250- err = json .Unmarshal ([]byte (textContent .Text ), & returnedFiles )
1249+ // Verify Content[0] is metadata JSON
1250+ metaContent , ok := result .Content [0 ].(* mcp.TextContent )
1251+ require .True (t , ok , "expected first content to be TextContent" )
1252+
1253+ var returnedMetas []map [string ]any
1254+ err = json .Unmarshal ([]byte (metaContent .Text ), & returnedMetas )
12511255 require .NoError (t , err )
1252- assert .Len (t , returnedFiles , len (tc .expectedFiles ))
1253- for i , file := range returnedFiles {
1254- assert .Equal (t , tc .expectedFiles [i ].GetFilename (), file .Filename )
1255- assert .Equal (t , tc .expectedFiles [i ].GetStatus (), file .Status )
1256- assert .Equal (t , tc .expectedFiles [i ].GetAdditions (), file .Additions )
1257- assert .Equal (t , tc .expectedFiles [i ].GetDeletions (), file .Deletions )
1258- }
1256+ assert .Len (t , returnedMetas , len (tc .expectedFiles ))
1257+
1258+ // Verify metadata content for first file
1259+ assert .Equal (t , "file1.go" , returnedMetas [0 ]["filename" ])
1260+ assert .Equal (t , "modified" , returnedMetas [0 ]["status" ])
1261+ assert .Equal (t , float64 (10 ), returnedMetas [0 ]["additions" ])
1262+ assert .Equal (t , float64 (5 ), returnedMetas [0 ]["deletions" ])
1263+ assert .Equal (t , float64 (15 ), returnedMetas [0 ]["changes" ])
1264+ assert .Nil (t , returnedMetas [0 ]["patch" ], "metadata should not contain patch field" )
1265+
1266+ // Verify metadata content for second file
1267+ assert .Equal (t , "file2.go" , returnedMetas [1 ]["filename" ])
1268+ assert .Equal (t , "added" , returnedMetas [1 ]["status" ])
1269+ assert .Equal (t , float64 (20 ), returnedMetas [1 ]["additions" ])
1270+ assert .Equal (t , float64 (20 ), returnedMetas [1 ]["changes" ])
1271+ assert .Nil (t , returnedMetas [1 ]["patch" ], "metadata should not contain patch field" )
1272+
1273+ // Verify Content[1] is patch for file1.go
1274+ patch1Content , ok := result .Content [1 ].(* mcp.TextContent )
1275+ require .True (t , ok , "expected second content to be TextContent" )
1276+ assert .Contains (t , patch1Content .Text , "filename: file1.go" )
1277+ assert .Contains (t , patch1Content .Text , "@@ -1,5 +1,10 @@" )
1278+
1279+ // Verify Content[2] is patch for file2.go
1280+ patch2Content , ok := result .Content [2 ].(* mcp.TextContent )
1281+ require .True (t , ok , "expected third content to be TextContent" )
1282+ assert .Contains (t , patch2Content .Text , "filename: file2.go" )
1283+ assert .Contains (t , patch2Content .Text , "@@ -0,0 +1,20 @@" )
12591284 })
12601285 }
12611286}
0 commit comments