Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
complete struct fields & rename option type
  • Loading branch information
michaeljacholke committed May 7, 2026
commit df12a08bc001fd8e767b32779070cc4836e5a61f
30 changes: 18 additions & 12 deletions pkg/github/issue_fields.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,26 @@ import (

// IssueField represents an organization-level issue field definition.
type IssueField struct {
ID int64 `json:"id"`
NodeID string `json:"node_id"`
Name string `json:"name"`
Description string `json:"description,omitempty"`
DataType string `json:"data_type"`
Options []IssueFieldOption `json:"options,omitempty"`
CreatedAt string `json:"created_at"`
UpdatedAt string `json:"updated_at"`
ID int64 `json:"id"`
NodeID string `json:"node_id"`
Name string `json:"name"`
Description string `json:"description,omitempty"`
DataType string `json:"data_type"`
Visibility string `json:"visibility"`
Options []IssueSingleSelectFieldOption `json:"options,omitempty"`
CreatedAt string `json:"created_at"`
UpdatedAt string `json:"updated_at"`
}

// IssueFieldOption represents an option for a single_select issue field.
type IssueFieldOption struct {
ID int64 `json:"id"`
Name string `json:"name"`
// IssueSingleSelectFieldOption represents an option for a single_select issue field.
type IssueSingleSelectFieldOption struct {
ID int64 `json:"id"`
Name string `json:"name"`
Description string `json:"description,omitempty"`
Color string `json:"color"`
Priority int64 `json:"priority"`
CreatedAt string `json:"created_at"`
UpdatedAt string `json:"updated_at"`
}

// ListOrgIssueFields creates a tool to list issue field definitions for an organization.
Expand Down
12 changes: 8 additions & 4 deletions pkg/github/issue_fields_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ func Test_ListOrgIssueFields(t *testing.T) {
Name: "DRI",
Description: "Directly responsible individual",
DataType: "text",
Visibility: "organization_members_only",
CreatedAt: "2024-12-11T14:39:09Z",
UpdatedAt: "2024-12-11T14:39:09Z",
},
Expand All @@ -43,10 +44,11 @@ func Test_ListOrgIssueFields(t *testing.T) {
Name: "Priority",
Description: "Level of importance",
DataType: "single_select",
Options: []IssueFieldOption{
{ID: 1, Name: "High"},
{ID: 2, Name: "Medium"},
{ID: 3, Name: "Low"},
Visibility: "all",
Options: []IssueSingleSelectFieldOption{
{ID: 1, Name: "High", Color: "red", Priority: 1, CreatedAt: "2024-12-11T14:39:09Z", UpdatedAt: "2024-12-11T14:39:09Z"},
{ID: 2, Name: "Medium", Color: "yellow", Priority: 2, CreatedAt: "2024-12-11T14:39:09Z", UpdatedAt: "2024-12-11T14:39:09Z"},
{ID: 3, Name: "Low", Color: "gray", Priority: 3, CreatedAt: "2024-12-11T14:39:09Z", UpdatedAt: "2024-12-11T14:39:09Z"},
},
CreatedAt: "2024-12-11T14:39:09Z",
UpdatedAt: "2024-12-11T14:39:09Z",
Expand Down Expand Up @@ -161,10 +163,12 @@ func Test_ListOrgIssueFields(t *testing.T) {
assert.Equal(t, expected.ID, returnedFields[i].ID)
assert.Equal(t, expected.Name, returnedFields[i].Name)
assert.Equal(t, expected.DataType, returnedFields[i].DataType)
assert.Equal(t, expected.Visibility, returnedFields[i].Visibility)
if expected.Options != nil {
require.Equal(t, len(expected.Options), len(returnedFields[i].Options))
for j, opt := range expected.Options {
assert.Equal(t, opt.Name, returnedFields[i].Options[j].Name)
assert.Equal(t, opt.Color, returnedFields[i].Options[j].Color)
}
}
}
Expand Down
Loading