From e15b340bcfd308c9157283288ff817afbe74efd5 Mon Sep 17 00:00:00 2001 From: LuluBeatson Date: Mon, 7 Jul 2025 13:20:46 +0100 Subject: [PATCH 1/3] rm State which does not exist on type Discussion --- pkg/github/discussions.go | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/pkg/github/discussions.go b/pkg/github/discussions.go index a7ec8e20f..07fcc6c81 100644 --- a/pkg/github/discussions.go +++ b/pkg/github/discussions.go @@ -195,7 +195,6 @@ func GetDiscussion(getGQLClient GetGQLClientFn, t translations.TranslationHelper Discussion struct { Number githubv4.Int Body githubv4.String - State githubv4.String CreatedAt githubv4.DateTime URL githubv4.String `graphql:"url"` Category struct { @@ -213,16 +212,13 @@ func GetDiscussion(getGQLClient GetGQLClientFn, t translations.TranslationHelper return mcp.NewToolResultError(err.Error()), nil } d := q.Repository.Discussion - discussion := &github.Issue{ + discussion := &github.Discussion{ Number: github.Ptr(int(d.Number)), Body: github.Ptr(string(d.Body)), - State: github.Ptr(string(d.State)), HTMLURL: github.Ptr(string(d.URL)), CreatedAt: &github.Timestamp{Time: d.CreatedAt.Time}, - Labels: []*github.Label{ - { - Name: github.Ptr(fmt.Sprintf("category:%s", string(d.Category.Name))), - }, + DiscussionCategory: &github.DiscussionCategory{ + Name: github.Ptr(string(d.Category.Name)), }, } out, err := json.Marshal(discussion) From 12f1278faf1425d7e462d87282c0ec9b245ba28a Mon Sep 17 00:00:00 2001 From: LuluBeatson Date: Mon, 7 Jul 2025 13:30:33 +0100 Subject: [PATCH 2/3] update Test_GetDiscussion --- pkg/github/discussions_test.go | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/pkg/github/discussions_test.go b/pkg/github/discussions_test.go index 545d604f9..d15d8dbd4 100644 --- a/pkg/github/discussions_test.go +++ b/pkg/github/discussions_test.go @@ -200,7 +200,6 @@ func Test_GetDiscussion(t *testing.T) { Discussion struct { Number githubv4.Int Body githubv4.String - State githubv4.String CreatedAt githubv4.DateTime URL githubv4.String `graphql:"url"` Category struct { @@ -218,7 +217,7 @@ func Test_GetDiscussion(t *testing.T) { name string response githubv4mock.GQLResponse expectError bool - expected *github.Issue + expected *github.Discussion errContains string }{ { @@ -227,23 +226,19 @@ func Test_GetDiscussion(t *testing.T) { "repository": map[string]any{"discussion": map[string]any{ "number": 1, "body": "This is a test discussion", - "state": "open", "url": "https://github.com/owner/repo/discussions/1", "createdAt": "2025-04-25T12:00:00Z", "category": map[string]any{"name": "General"}, }}, }), expectError: false, - expected: &github.Issue{ + expected: &github.Discussion{ HTMLURL: github.Ptr("https://github.com/owner/repo/discussions/1"), Number: github.Ptr(1), Body: github.Ptr("This is a test discussion"), - State: github.Ptr("open"), CreatedAt: &github.Timestamp{Time: time.Date(2025, 4, 25, 12, 0, 0, 0, time.UTC)}, - Labels: []*github.Label{ - { - Name: github.Ptr("category:General"), - }, + DiscussionCategory: &github.DiscussionCategory{ + Name: github.Ptr("General"), }, }, }, @@ -272,15 +267,13 @@ func Test_GetDiscussion(t *testing.T) { } require.NoError(t, err) - var out github.Issue + var out github.Discussion require.NoError(t, json.Unmarshal([]byte(text), &out)) assert.Equal(t, *tc.expected.HTMLURL, *out.HTMLURL) assert.Equal(t, *tc.expected.Number, *out.Number) assert.Equal(t, *tc.expected.Body, *out.Body) - assert.Equal(t, *tc.expected.State, *out.State) // Check category label - require.Len(t, out.Labels, 1) - assert.Equal(t, *tc.expected.Labels[0].Name, *out.Labels[0].Name) + assert.Equal(t, *tc.expected.DiscussionCategory.Name, *out.DiscussionCategory.Name) }) } } From 9bb9ca669b781c23380a18e2aea4a43ebef39dc0 Mon Sep 17 00:00:00 2001 From: LuluBeatson Date: Mon, 7 Jul 2025 13:58:10 +0100 Subject: [PATCH 3/3] use Discussion object instead of Issue --- pkg/github/discussions.go | 22 +++++++++------------- pkg/github/discussions_test.go | 9 ++++----- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/pkg/github/discussions.go b/pkg/github/discussions.go index 07fcc6c81..3e53a633b 100644 --- a/pkg/github/discussions.go +++ b/pkg/github/discussions.go @@ -62,7 +62,7 @@ func ListDiscussions(getGQLClient GetGQLClientFn, t translations.TranslationHelp } // Now execute the discussions query - var discussions []*github.Issue + var discussions []*github.Discussion if categoryID != nil { // Query with category filter (server-side filtering) var query struct { @@ -89,17 +89,15 @@ func ListDiscussions(getGQLClient GetGQLClientFn, t translations.TranslationHelp return mcp.NewToolResultError(err.Error()), nil } - // Map nodes to GitHub Issue objects + // Map nodes to GitHub Discussion objects for _, n := range query.Repository.Discussions.Nodes { - di := &github.Issue{ + di := &github.Discussion{ Number: github.Ptr(int(n.Number)), Title: github.Ptr(string(n.Title)), HTMLURL: github.Ptr(string(n.URL)), CreatedAt: &github.Timestamp{Time: n.CreatedAt.Time}, - Labels: []*github.Label{ - { - Name: github.Ptr(fmt.Sprintf("category:%s", string(n.Category.Name))), - }, + DiscussionCategory: &github.DiscussionCategory{ + Name: github.Ptr(string(n.Category.Name)), }, } discussions = append(discussions, di) @@ -129,17 +127,15 @@ func ListDiscussions(getGQLClient GetGQLClientFn, t translations.TranslationHelp return mcp.NewToolResultError(err.Error()), nil } - // Map nodes to GitHub Issue objects + // Map nodes to GitHub Discussion objects for _, n := range query.Repository.Discussions.Nodes { - di := &github.Issue{ + di := &github.Discussion{ Number: github.Ptr(int(n.Number)), Title: github.Ptr(string(n.Title)), HTMLURL: github.Ptr(string(n.URL)), CreatedAt: &github.Timestamp{Time: n.CreatedAt.Time}, - Labels: []*github.Label{ - { - Name: github.Ptr(fmt.Sprintf("category:%s", string(n.Category.Name))), - }, + DiscussionCategory: &github.DiscussionCategory{ + Name: github.Ptr(string(n.Category.Name)), }, } discussions = append(discussions, di) diff --git a/pkg/github/discussions_test.go b/pkg/github/discussions_test.go index d15d8dbd4..5132c6ce0 100644 --- a/pkg/github/discussions_test.go +++ b/pkg/github/discussions_test.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" "net/http" - "strings" "testing" "time" @@ -168,17 +167,17 @@ func Test_ListDiscussions(t *testing.T) { } require.NoError(t, err) - var returnedDiscussions []*github.Issue + var returnedDiscussions []*github.Discussion err = json.Unmarshal([]byte(text), &returnedDiscussions) require.NoError(t, err) assert.Len(t, returnedDiscussions, tc.expectedCount, "Expected %d discussions, got %d", tc.expectedCount, len(returnedDiscussions)) - // Verify that all returned discussions have a category label if filtered + // Verify that all returned discussions have a category if filtered if _, hasCategory := tc.reqParams["category"]; hasCategory { for _, discussion := range returnedDiscussions { - require.NotEmpty(t, discussion.Labels, "Discussion should have category label") - assert.True(t, strings.HasPrefix(*discussion.Labels[0].Name, "category:"), "Discussion should have category label prefix") + require.NotNil(t, discussion.DiscussionCategory, "Discussion should have category") + assert.NotEmpty(t, *discussion.DiscussionCategory.Name, "Discussion should have category name") } } }) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy