Skip to content

Commit 9a5fb0b

Browse files
zwickCopilot
andcommitted
Address CCR feedback: assert resolved field NodeID for all variants; rename item resolver test
- Assert field.NodeID in Test_ResolveProjectFieldByName_Success. - Add Test_ResolveProjectFieldByName_NodeIDsForAllVariants covering single-select, iteration, and generic fields (asserts NodeID + DataType). - Rename Test_ResolveProjectItemIDByIssueNumber_Success to Test_ResolveProjectItemByIssueNumber_Success to match the resolver it calls. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 89f897b0-115f-4435-a071-46fb6c49be86
1 parent 55e1a7e commit 9a5fb0b

1 file changed

Lines changed: 59 additions & 1 deletion

File tree

pkg/github/projects_resolver_test.go

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,27 @@ func statusFieldNode(nodeID string, databaseID int, name string, options []map[s
7171
}
7272
}
7373

74+
// iterationFieldNode is an iteration field response node for use in mock data.
75+
func iterationFieldNode(nodeID string, databaseID int, name string) map[string]any {
76+
return map[string]any{
77+
"id": nodeID,
78+
"databaseId": databaseID,
79+
"name": name,
80+
"dataType": "ITERATION",
81+
}
82+
}
83+
84+
// genericFieldNode is a plain field response node (neither single-select nor
85+
// iteration, e.g. TEXT or NUMBER) for use in mock data.
86+
func genericFieldNode(nodeID string, databaseID int, name, dataType string) map[string]any {
87+
return map[string]any{
88+
"id": nodeID,
89+
"databaseId": databaseID,
90+
"name": name,
91+
"dataType": dataType,
92+
}
93+
}
94+
7495
func fieldsResponse(nodes []map[string]any) map[string]any {
7596
return map[string]any{
7697
"organization": map[string]any{
@@ -109,6 +130,7 @@ func Test_ResolveProjectFieldByName_Success(t *testing.T) {
109130
require.NoError(t, err)
110131
require.NotNil(t, field)
111132
assert.Equal(t, "12345", field.ID)
133+
assert.Equal(t, "PVTSSF_lADOBBcDeFg123", field.NodeID)
112134
assert.Equal(t, "SINGLE_SELECT", field.DataType)
113135
assert.Len(t, field.Options, 3)
114136

@@ -117,6 +139,42 @@ func Test_ResolveProjectFieldByName_Success(t *testing.T) {
117139
assert.Equal(t, "OPT_b", optionID)
118140
}
119141

142+
func Test_ResolveProjectFieldByName_NodeIDsForAllVariants(t *testing.T) {
143+
mocked := githubv4mock.NewMockedHTTPClient(
144+
githubv4mock.NewQueryMatcher(
145+
projectFieldsTestQuery{},
146+
fieldsQueryVars("octo-org", 7),
147+
githubv4mock.DataResponse(fieldsResponse([]map[string]any{
148+
statusFieldNode("PVTSSF_single1", 111, "Status", []map[string]any{
149+
{"id": "OPT_a", "name": "Todo"},
150+
}),
151+
iterationFieldNode("PVTIF_iteration1", 222, "Sprint"),
152+
genericFieldNode("PVTF_text1", 333, "Notes", "TEXT"),
153+
})),
154+
),
155+
)
156+
gql := githubv4.NewClient(mocked)
157+
158+
variants := []struct {
159+
fieldName string
160+
expectedType string
161+
wantNodeID string
162+
}{
163+
{"Status", "SINGLE_SELECT", "PVTSSF_single1"},
164+
{"Sprint", "ITERATION", "PVTIF_iteration1"},
165+
{"Notes", "TEXT", "PVTF_text1"},
166+
}
167+
for _, v := range variants {
168+
t.Run(v.fieldName, func(t *testing.T) {
169+
field, err := resolveProjectFieldByName(context.Background(), gql, "octo-org", "org", 7, v.fieldName, v.expectedType)
170+
require.NoError(t, err)
171+
require.NotNil(t, field)
172+
assert.Equal(t, v.wantNodeID, field.NodeID)
173+
assert.Equal(t, v.expectedType, field.DataType)
174+
})
175+
}
176+
}
177+
120178
func Test_ResolveProjectFieldByName_NotFound_ReturnsStructuredError(t *testing.T) {
121179
mocked := githubv4mock.NewMockedHTTPClient(
122180
githubv4mock.NewQueryMatcher(
@@ -243,7 +301,7 @@ func (t *requestCountingTransport) RoundTrip(req *http.Request) (*http.Response,
243301
return t.inner.RoundTrip(req)
244302
}
245303

246-
func Test_ResolveProjectItemIDByIssueNumber_Success(t *testing.T) {
304+
func Test_ResolveProjectItemByIssueNumber_Success(t *testing.T) {
247305
mocked := githubv4mock.NewMockedHTTPClient(
248306
// project node id lookup (org)
249307
githubv4mock.NewQueryMatcher(

0 commit comments

Comments
 (0)