chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
package github_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"log/slog"
|
||||
"testing"
|
||||
|
||||
"github.com/github/github-mcp-server/pkg/github"
|
||||
"github.com/github/github-mcp-server/pkg/observability"
|
||||
"github.com/github/github-mcp-server/pkg/observability/metrics"
|
||||
"github.com/github/github-mcp-server/pkg/translations"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func testExporters() observability.Exporters {
|
||||
obs, _ := observability.NewExporters(slog.New(slog.DiscardHandler), metrics.NewNoopMetrics())
|
||||
return obs
|
||||
}
|
||||
|
||||
func TestIsFeatureEnabled_WithEnabledFlag(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
// Create a feature checker that returns true for "test_flag"
|
||||
checker := func(_ context.Context, flagName string) (bool, error) {
|
||||
return flagName == "test_flag", nil
|
||||
}
|
||||
|
||||
// Create deps with the checker using NewBaseDeps
|
||||
deps := github.NewBaseDeps(
|
||||
nil, // client
|
||||
nil, // gqlClient
|
||||
nil, // rawClient
|
||||
nil, // repoAccessCache
|
||||
translations.NullTranslationHelper,
|
||||
github.FeatureFlags{},
|
||||
0, // contentWindowSize
|
||||
checker, // featureChecker
|
||||
testExporters(),
|
||||
)
|
||||
|
||||
// Test enabled flag
|
||||
result := deps.IsFeatureEnabled(context.Background(), "test_flag")
|
||||
assert.True(t, result, "Expected test_flag to be enabled")
|
||||
|
||||
// Test disabled flag
|
||||
result = deps.IsFeatureEnabled(context.Background(), "other_flag")
|
||||
assert.False(t, result, "Expected other_flag to be disabled")
|
||||
}
|
||||
|
||||
func TestIsFeatureEnabled_WithoutChecker(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
// Create deps without feature checker (nil)
|
||||
deps := github.NewBaseDeps(
|
||||
nil, // client
|
||||
nil, // gqlClient
|
||||
nil, // rawClient
|
||||
nil, // repoAccessCache
|
||||
translations.NullTranslationHelper,
|
||||
github.FeatureFlags{},
|
||||
0, // contentWindowSize
|
||||
nil, // featureChecker (nil)
|
||||
testExporters(),
|
||||
)
|
||||
|
||||
// Should return false when checker is nil
|
||||
result := deps.IsFeatureEnabled(context.Background(), "any_flag")
|
||||
assert.False(t, result, "Expected false when checker is nil")
|
||||
}
|
||||
|
||||
func TestIsFeatureEnabled_EmptyFlagName(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
// Create a feature checker
|
||||
checker := func(_ context.Context, _ string) (bool, error) {
|
||||
return true, nil
|
||||
}
|
||||
|
||||
deps := github.NewBaseDeps(
|
||||
nil, // client
|
||||
nil, // gqlClient
|
||||
nil, // rawClient
|
||||
nil, // repoAccessCache
|
||||
translations.NullTranslationHelper,
|
||||
github.FeatureFlags{},
|
||||
0, // contentWindowSize
|
||||
checker, // featureChecker
|
||||
testExporters(),
|
||||
)
|
||||
|
||||
// Should return false for empty flag name
|
||||
result := deps.IsFeatureEnabled(context.Background(), "")
|
||||
assert.False(t, result, "Expected false for empty flag name")
|
||||
}
|
||||
|
||||
func TestIsFeatureEnabled_CheckerError(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
// Create a feature checker that returns an error
|
||||
checker := func(_ context.Context, _ string) (bool, error) {
|
||||
return false, errors.New("checker error")
|
||||
}
|
||||
|
||||
deps := github.NewBaseDeps(
|
||||
nil, // client
|
||||
nil, // gqlClient
|
||||
nil, // rawClient
|
||||
nil, // repoAccessCache
|
||||
translations.NullTranslationHelper,
|
||||
github.FeatureFlags{},
|
||||
0, // contentWindowSize
|
||||
checker, // featureChecker
|
||||
testExporters(),
|
||||
)
|
||||
|
||||
// Should return false and log error (not crash)
|
||||
result := deps.IsFeatureEnabled(context.Background(), "error_flag")
|
||||
assert.False(t, result, "Expected false when checker returns error")
|
||||
}
|
||||
Reference in New Issue
Block a user