chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,187 @@
|
||||
package github
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestAddDefaultToolset(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
input []string
|
||||
expected []string
|
||||
}{
|
||||
{
|
||||
name: "no default keyword - return unchanged",
|
||||
input: []string{"actions", "gists"},
|
||||
expected: []string{"actions", "gists"},
|
||||
},
|
||||
{
|
||||
name: "default keyword present - expand and remove default",
|
||||
input: []string{"default"},
|
||||
expected: []string{
|
||||
"context",
|
||||
"copilot",
|
||||
"repos",
|
||||
"issues",
|
||||
"pull_requests",
|
||||
"users",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "default with additional toolsets",
|
||||
input: []string{"default", "actions", "gists"},
|
||||
expected: []string{
|
||||
"actions",
|
||||
"gists",
|
||||
"context",
|
||||
"copilot",
|
||||
"repos",
|
||||
"issues",
|
||||
"pull_requests",
|
||||
"users",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "default with overlapping toolsets - should not duplicate",
|
||||
input: []string{"default", "context", "repos"},
|
||||
expected: []string{
|
||||
"context",
|
||||
"copilot",
|
||||
"repos",
|
||||
"issues",
|
||||
"pull_requests",
|
||||
"users",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "empty input",
|
||||
input: []string{},
|
||||
expected: []string{},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
result := AddDefaultToolset(tt.input)
|
||||
|
||||
require.Len(t, result, len(tt.expected), "result length should match expected length")
|
||||
|
||||
resultMap := make(map[string]bool)
|
||||
for _, toolset := range result {
|
||||
resultMap[toolset] = true
|
||||
}
|
||||
|
||||
expectedMap := make(map[string]bool)
|
||||
for _, toolset := range tt.expected {
|
||||
expectedMap[toolset] = true
|
||||
}
|
||||
|
||||
assert.Equal(t, expectedMap, resultMap, "result should contain all expected toolsets")
|
||||
assert.False(t, resultMap["default"], "result should not contain 'default' keyword")
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestRemoveToolset(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
tools []string
|
||||
toRemove string
|
||||
expected []string
|
||||
}{
|
||||
{
|
||||
name: "remove existing toolset",
|
||||
tools: []string{"actions", "gists", "notifications"},
|
||||
toRemove: "gists",
|
||||
expected: []string{"actions", "notifications"},
|
||||
},
|
||||
{
|
||||
name: "remove from empty slice",
|
||||
tools: []string{},
|
||||
toRemove: "actions",
|
||||
expected: []string{},
|
||||
},
|
||||
{
|
||||
name: "remove duplicate entries",
|
||||
tools: []string{"actions", "gists", "actions", "notifications"},
|
||||
toRemove: "actions",
|
||||
expected: []string{"gists", "notifications"},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
result := RemoveToolset(tt.tools, tt.toRemove)
|
||||
assert.Equal(t, tt.expected, result)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestContainsToolset(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
tools []string
|
||||
toCheck string
|
||||
expected bool
|
||||
}{
|
||||
{
|
||||
name: "toolset exists",
|
||||
tools: []string{"actions", "gists", "notifications"},
|
||||
toCheck: "gists",
|
||||
expected: true,
|
||||
},
|
||||
{
|
||||
name: "toolset does not exist",
|
||||
tools: []string{"actions", "gists", "notifications"},
|
||||
toCheck: "repos",
|
||||
expected: false,
|
||||
},
|
||||
{
|
||||
name: "empty slice",
|
||||
tools: []string{},
|
||||
toCheck: "actions",
|
||||
expected: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
result := ContainsToolset(tt.tools, tt.toCheck)
|
||||
assert.Equal(t, tt.expected, result)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestGenerateToolsetsHelp(t *testing.T) {
|
||||
// Generate the help text
|
||||
helpText := GenerateToolsetsHelp()
|
||||
|
||||
// Verify help text is not empty
|
||||
require.NotEmpty(t, helpText)
|
||||
|
||||
// Verify it contains expected sections
|
||||
assert.Contains(t, helpText, "Comma-separated list of tool groups to enable")
|
||||
assert.Contains(t, helpText, "Available:")
|
||||
assert.Contains(t, helpText, "Special toolset keywords:")
|
||||
assert.Contains(t, helpText, "all: Enables all available toolsets")
|
||||
assert.Contains(t, helpText, "default: Enables the default toolset configuration")
|
||||
assert.Contains(t, helpText, "Examples:")
|
||||
assert.Contains(t, helpText, "--toolsets=actions,gists,notifications")
|
||||
assert.Contains(t, helpText, "--toolsets=default,actions,gists")
|
||||
assert.Contains(t, helpText, "--toolsets=all")
|
||||
|
||||
// Verify it contains some expected default toolsets
|
||||
assert.Contains(t, helpText, "context")
|
||||
assert.Contains(t, helpText, "repos")
|
||||
assert.Contains(t, helpText, "issues")
|
||||
assert.Contains(t, helpText, "pull_requests")
|
||||
assert.Contains(t, helpText, "users")
|
||||
|
||||
// Verify it contains some expected available toolsets
|
||||
assert.Contains(t, helpText, "actions")
|
||||
assert.Contains(t, helpText, "gists")
|
||||
assert.Contains(t, helpText, "notifications")
|
||||
}
|
||||
Reference in New Issue
Block a user