diff --git a/pkg/github/issues.go b/pkg/github/issues.go index 63174c9e9..d6af14abb 100644 --- a/pkg/github/issues.go +++ b/pkg/github/issues.go @@ -1789,7 +1789,7 @@ func AssignCopilotToIssue(t translations.TranslationHelperFunc) inventory.Server // Add the GraphQL-Features header for the agent assignment API // The header will be read by the HTTP transport if it's configured to do so - ctxWithFeatures := withGraphQLFeatures(ctx, "issues_copilot_assignment_api_support") + ctxWithFeatures := WithGraphQLFeatures(ctx, "issues_copilot_assignment_api_support") if err := client.Mutate( ctxWithFeatures, @@ -1917,8 +1917,8 @@ func AssignCodingAgentPrompt(t translations.TranslationHelperFunc) inventory.Ser // graphQLFeaturesKey is a context key for GraphQL feature flags type graphQLFeaturesKey struct{} -// withGraphQLFeatures adds GraphQL feature flags to the context -func withGraphQLFeatures(ctx context.Context, features ...string) context.Context { +// WithGraphQLFeatures adds GraphQL feature flags to the context +func WithGraphQLFeatures(ctx context.Context, features ...string) context.Context { return context.WithValue(ctx, graphQLFeaturesKey{}, features) } diff --git a/pkg/github/issues_test.go b/pkg/github/issues_test.go index 21e78874a..bf88a0ad7 100644 --- a/pkg/github/issues_test.go +++ b/pkg/github/issues_test.go @@ -3723,3 +3723,31 @@ func Test_ListIssueTypes(t *testing.T) { }) } } + +// TestGraphQLFeatures tests the exported GraphQL features context functions +func TestGraphQLFeatures(t *testing.T) { + ctx := context.Background() + + // Test that GetGraphQLFeatures returns nil when no features are set + features := GetGraphQLFeatures(ctx) + require.Nil(t, features) + + // Test WithGraphQLFeatures adds features to context + ctxWithFeatures := WithGraphQLFeatures(ctx, "feature1", "feature2") + features = GetGraphQLFeatures(ctxWithFeatures) + require.NotNil(t, features) + require.Len(t, features, 2) + assert.Equal(t, "feature1", features[0]) + assert.Equal(t, "feature2", features[1]) + + // Test that the original context is not modified + features = GetGraphQLFeatures(ctx) + require.Nil(t, features) + + // Test WithGraphQLFeatures with single feature + ctxWithOneFeature := WithGraphQLFeatures(ctx, "issues_copilot_assignment_api_support") + features = GetGraphQLFeatures(ctxWithOneFeature) + require.NotNil(t, features) + require.Len(t, features, 1) + assert.Equal(t, "issues_copilot_assignment_api_support", features[0]) +}