Skip to content

Commit 8395bea

Browse files
test(issues): cover stable assignee responses
Verify issue_read returns assigned logins and a definitive empty array for unassigned issues. Exercise the same empty-array contract through list_issues field filtering. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
1 parent 95a8e75 commit 8395bea

2 files changed

Lines changed: 19 additions & 5 deletions

File tree

pkg/github/fields_filtering_test.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -393,15 +393,12 @@ func Test_ListIssues_AssigneesField(t *testing.T) {
393393
})
394394

395395
t.Run("unassigned issues serialize as an empty array", func(t *testing.T) {
396-
// The mock returns one assigned issue, so drive the empty case through
397-
// the conversion directly: no assignees node must still yield [], never
398-
// null and never an absent key.
399396
issue := fragmentToMinimalIssue(IssueFragment{})
400397
require.NotNil(t, issue.Assignees)
401398

402-
encoded, err := json.Marshal(issue)
399+
filtered, err := filterFields(issue, []string{"assignees"})
403400
require.NoError(t, err)
404-
assert.Contains(t, string(encoded), "\"assignees\":[]")
401+
assert.Equal(t, map[string]any{"assignees": []any{}}, filtered)
405402
})
406403
}
407404

pkg/github/issues_test.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,10 @@ func Test_GetIssue(t *testing.T) {
144144
User: &github.User{
145145
Login: github.Ptr("testuser"),
146146
},
147+
Assignees: []*github.User{
148+
{Login: github.Ptr("octocat")},
149+
{Login: github.Ptr("mona")},
150+
},
147151
Repository: &github.Repository{
148152
Name: github.Ptr("repo"),
149153
Owner: &github.User{
@@ -287,6 +291,19 @@ func Test_GetIssue(t *testing.T) {
287291
assert.Equal(t, tc.expectedIssue.GetState(), returnedIssue.State)
288292
assert.Equal(t, tc.expectedIssue.GetHTMLURL(), returnedIssue.HTMLURL)
289293
assert.Equal(t, tc.expectedIssue.GetUser().GetLogin(), returnedIssue.User.Login)
294+
295+
expectedAssignees := make([]string, 0, len(tc.expectedIssue.Assignees))
296+
for _, assignee := range tc.expectedIssue.Assignees {
297+
expectedAssignees = append(expectedAssignees, assignee.GetLogin())
298+
}
299+
assert.Equal(t, expectedAssignees, returnedIssue.Assignees)
300+
301+
var rawIssue map[string]json.RawMessage
302+
require.NoError(t, json.Unmarshal([]byte(textContent.Text), &rawIssue))
303+
require.Contains(t, rawIssue, "assignees")
304+
if len(expectedAssignees) == 0 {
305+
assert.JSONEq(t, "[]", string(rawIssue["assignees"]))
306+
}
290307
})
291308
}
292309
}

0 commit comments

Comments
 (0)