Skip to content

Commit 8da9972

Browse files
authored
Revert "add support for fields in issue read"
This reverts commit 56f35f5.
1 parent 0c986e9 commit 8da9972

2 files changed

Lines changed: 20 additions & 142 deletions

File tree

pkg/github/issues_test.go

Lines changed: 0 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -275,91 +275,6 @@ func Test_GetIssue(t *testing.T) {
275275
}
276276
}
277277

278-
func Test_GetIssue_FieldValues(t *testing.T) {
279-
// Verify that issue_field_values from the REST API are present in the returned object.
280-
serverTool := IssueRead(translations.NullTranslationHelper)
281-
282-
mockIssueWithFields := &github.Issue{
283-
Number: github.Ptr(99),
284-
Title: github.Ptr("Issue with field values"),
285-
Body: github.Ptr("body"),
286-
State: github.Ptr("open"),
287-
HTMLURL: github.Ptr("https://github.com/owner/repo/issues/99"),
288-
User: &github.User{
289-
Login: github.Ptr("testuser"),
290-
},
291-
IssueFieldValues: []*github.IssueFieldValue{
292-
{
293-
IssueFieldID: 1001,
294-
NodeID: "FV_node_1",
295-
DataType: "single_select",
296-
Value: "High",
297-
SingleSelectOption: &github.IssueFieldValueSingleSelectOption{
298-
ID: 42,
299-
Name: "High",
300-
Color: "red",
301-
},
302-
},
303-
{
304-
IssueFieldID: 1002,
305-
NodeID: "FV_node_2",
306-
DataType: "text",
307-
Value: "some text value",
308-
},
309-
},
310-
}
311-
312-
mockedClient := MockHTTPClientWithHandlers(map[string]http.HandlerFunc{
313-
GetReposIssuesByOwnerByRepoByIssueNumber: mockResponse(t, http.StatusOK, mockIssueWithFields),
314-
})
315-
316-
client := github.NewClient(mockedClient)
317-
cache := stubRepoAccessCache(nil, 15*time.Minute)
318-
flags := stubFeatureFlags(map[string]bool{"lockdown-mode": false})
319-
deps := BaseDeps{
320-
Client: client,
321-
GQLClient: defaultGQLClient,
322-
RepoAccessCache: cache,
323-
Flags: flags,
324-
}
325-
handler := serverTool.Handler(deps)
326-
327-
request := createMCPRequest(map[string]any{
328-
"method": "get",
329-
"owner": "owner",
330-
"repo": "repo",
331-
"issue_number": float64(99),
332-
})
333-
result, err := handler(ContextWithDeps(context.Background(), deps), &request)
334-
require.NoError(t, err)
335-
require.NotNil(t, result)
336-
337-
textContent := getTextResult(t, result)
338-
339-
var returnedIssue MinimalIssue
340-
err = json.Unmarshal([]byte(textContent.Text), &returnedIssue)
341-
require.NoError(t, err)
342-
343-
require.Len(t, returnedIssue.IssueFieldValues, 2, "expected two issue field values")
344-
345-
first := returnedIssue.IssueFieldValues[0]
346-
assert.Equal(t, int64(1001), first.IssueFieldID)
347-
assert.Equal(t, "FV_node_1", first.NodeID)
348-
assert.Equal(t, "single_select", first.DataType)
349-
assert.Equal(t, "High", first.Value)
350-
require.NotNil(t, first.SingleSelectOption)
351-
assert.Equal(t, int64(42), first.SingleSelectOption.ID)
352-
assert.Equal(t, "High", first.SingleSelectOption.Name)
353-
assert.Equal(t, "red", first.SingleSelectOption.Color)
354-
355-
second := returnedIssue.IssueFieldValues[1]
356-
assert.Equal(t, int64(1002), second.IssueFieldID)
357-
assert.Equal(t, "FV_node_2", second.NodeID)
358-
assert.Equal(t, "text", second.DataType)
359-
assert.Equal(t, "some text value", second.Value)
360-
assert.Nil(t, second.SingleSelectOption)
361-
}
362-
363278
func Test_AddIssueComment(t *testing.T) {
364279
// Verify tool definition once
365280
serverTool := AddIssueComment(translations.NullTranslationHelper)

pkg/github/minimal_types.go

Lines changed: 20 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -169,45 +169,28 @@ type MinimalReactions struct {
169169
Eyes int `json:"eyes"`
170170
}
171171

172-
// MinimalIssueFieldValueSingleSelectOption is the trimmed output type for a single-select option of an issue field value.
173-
type MinimalIssueFieldValueSingleSelectOption struct {
174-
ID int64 `json:"id"`
175-
Name string `json:"name"`
176-
Color string `json:"color"`
177-
}
178-
179-
// MinimalIssueFieldValue is the trimmed output type for a custom field value attached to an issue.
180-
type MinimalIssueFieldValue struct {
181-
IssueFieldID int64 `json:"issue_field_id"`
182-
NodeID string `json:"node_id"`
183-
DataType string `json:"data_type"`
184-
Value any `json:"value"`
185-
SingleSelectOption *MinimalIssueFieldValueSingleSelectOption `json:"single_select_option,omitempty"`
186-
}
187-
188172
// MinimalIssue is the trimmed output type for issue objects to reduce verbosity.
189173
type MinimalIssue struct {
190-
Number int `json:"number"`
191-
Title string `json:"title"`
192-
Body string `json:"body,omitempty"`
193-
State string `json:"state"`
194-
StateReason string `json:"state_reason,omitempty"`
195-
Draft bool `json:"draft,omitempty"`
196-
Locked bool `json:"locked,omitempty"`
197-
HTMLURL string `json:"html_url,omitempty"`
198-
User *MinimalUser `json:"user,omitempty"`
199-
AuthorAssociation string `json:"author_association,omitempty"`
200-
Labels []string `json:"labels,omitempty"`
201-
Assignees []string `json:"assignees,omitempty"`
202-
Milestone string `json:"milestone,omitempty"`
203-
Comments int `json:"comments,omitempty"`
204-
Reactions *MinimalReactions `json:"reactions,omitempty"`
205-
CreatedAt string `json:"created_at,omitempty"`
206-
UpdatedAt string `json:"updated_at,omitempty"`
207-
ClosedAt string `json:"closed_at,omitempty"`
208-
ClosedBy string `json:"closed_by,omitempty"`
209-
IssueType string `json:"issue_type,omitempty"`
210-
IssueFieldValues []MinimalIssueFieldValue `json:"issue_field_values,omitempty"`
174+
Number int `json:"number"`
175+
Title string `json:"title"`
176+
Body string `json:"body,omitempty"`
177+
State string `json:"state"`
178+
StateReason string `json:"state_reason,omitempty"`
179+
Draft bool `json:"draft,omitempty"`
180+
Locked bool `json:"locked,omitempty"`
181+
HTMLURL string `json:"html_url,omitempty"`
182+
User *MinimalUser `json:"user,omitempty"`
183+
AuthorAssociation string `json:"author_association,omitempty"`
184+
Labels []string `json:"labels,omitempty"`
185+
Assignees []string `json:"assignees,omitempty"`
186+
Milestone string `json:"milestone,omitempty"`
187+
Comments int `json:"comments,omitempty"`
188+
Reactions *MinimalReactions `json:"reactions,omitempty"`
189+
CreatedAt string `json:"created_at,omitempty"`
190+
UpdatedAt string `json:"updated_at,omitempty"`
191+
ClosedAt string `json:"closed_at,omitempty"`
192+
ClosedBy string `json:"closed_by,omitempty"`
193+
IssueType string `json:"issue_type,omitempty"`
211194
}
212195

213196
// MinimalIssuesResponse is the trimmed output for a paginated list of issues.
@@ -385,26 +368,6 @@ func convertToMinimalIssue(issue *github.Issue) MinimalIssue {
385368
m.IssueType = issueType.GetName()
386369
}
387370

388-
for _, fv := range issue.IssueFieldValues {
389-
if fv == nil {
390-
continue
391-
}
392-
mfv := MinimalIssueFieldValue{
393-
IssueFieldID: fv.IssueFieldID,
394-
NodeID: fv.NodeID,
395-
DataType: fv.DataType,
396-
Value: fv.Value,
397-
}
398-
if opt := fv.SingleSelectOption; opt != nil {
399-
mfv.SingleSelectOption = &MinimalIssueFieldValueSingleSelectOption{
400-
ID: opt.ID,
401-
Name: opt.Name,
402-
Color: opt.Color,
403-
}
404-
}
405-
m.IssueFieldValues = append(m.IssueFieldValues, mfv)
406-
}
407-
408371
if r := issue.Reactions; r != nil {
409372
m.Reactions = &MinimalReactions{
410373
TotalCount: r.GetTotalCount(),

0 commit comments

Comments
 (0)