github-mcp-server / pkg /toolsets /toolsets_test.go
Gemini
Initial commit
fce10de
package toolsets
import (
"errors"
"testing"
)
func TestNewToolsetGroupIsEmptyWithoutEverythingOn(t *testing.T) {
tsg := NewToolsetGroup(false)
if len(tsg.Toolsets) != 0 {
t.Fatalf("Expected Toolsets map to be empty, got %d items", len(tsg.Toolsets))
}
if tsg.everythingOn {
t.Fatal("Expected everythingOn to be initialized as false")
}
}
func TestAddToolset(t *testing.T) {
tsg := NewToolsetGroup(false)
// Test adding a toolset
toolset := NewToolset("test-toolset", "A test toolset")
toolset.Enabled = true
tsg.AddToolset(toolset)
// Verify toolset was added correctly
if len(tsg.Toolsets) != 1 {
t.Errorf("Expected 1 toolset, got %d", len(tsg.Toolsets))
}
toolset, exists := tsg.Toolsets["test-toolset"]
if !exists {
t.Fatal("Feature was not added to the map")
}
if toolset.Name != "test-toolset" {
t.Errorf("Expected toolset name to be 'test-toolset', got '%s'", toolset.Name)
}
if toolset.Description != "A test toolset" {
t.Errorf("Expected toolset description to be 'A test toolset', got '%s'", toolset.Description)
}
if !toolset.Enabled {
t.Error("Expected toolset to be enabled")
}
// Test adding another toolset
anotherToolset := NewToolset("another-toolset", "Another test toolset")
tsg.AddToolset(anotherToolset)
if len(tsg.Toolsets) != 2 {
t.Errorf("Expected 2 toolsets, got %d", len(tsg.Toolsets))
}
// Test overriding existing toolset
updatedToolset := NewToolset("test-toolset", "Updated description")
tsg.AddToolset(updatedToolset)
toolset = tsg.Toolsets["test-toolset"]
if toolset.Description != "Updated description" {
t.Errorf("Expected toolset description to be updated to 'Updated description', got '%s'", toolset.Description)
}
if toolset.Enabled {
t.Error("Expected toolset to be disabled after update")
}
}
func TestIsEnabled(t *testing.T) {
tsg := NewToolsetGroup(false)
// Test with non-existent toolset
if tsg.IsEnabled("non-existent") {
t.Error("Expected IsEnabled to return false for non-existent toolset")
}
// Test with disabled toolset
disabledToolset := NewToolset("disabled-toolset", "A disabled toolset")
tsg.AddToolset(disabledToolset)
if tsg.IsEnabled("disabled-toolset") {
t.Error("Expected IsEnabled to return false for disabled toolset")
}
// Test with enabled toolset
enabledToolset := NewToolset("enabled-toolset", "An enabled toolset")
enabledToolset.Enabled = true
tsg.AddToolset(enabledToolset)
if !tsg.IsEnabled("enabled-toolset") {
t.Error("Expected IsEnabled to return true for enabled toolset")
}
}
func TestEnableFeature(t *testing.T) {
tsg := NewToolsetGroup(false)
// Test enabling non-existent toolset
err := tsg.EnableToolset("non-existent")
if err == nil {
t.Error("Expected error when enabling non-existent toolset")
}
// Test enabling toolset
testToolset := NewToolset("test-toolset", "A test toolset")
tsg.AddToolset(testToolset)
if tsg.IsEnabled("test-toolset") {
t.Error("Expected toolset to be disabled initially")
}
err = tsg.EnableToolset("test-toolset")
if err != nil {
t.Errorf("Expected no error when enabling toolset, got: %v", err)
}
if !tsg.IsEnabled("test-toolset") {
t.Error("Expected toolset to be enabled after EnableFeature call")
}
// Test enabling already enabled toolset
err = tsg.EnableToolset("test-toolset")
if err != nil {
t.Errorf("Expected no error when enabling already enabled toolset, got: %v", err)
}
}
func TestEnableToolsets(t *testing.T) {
tsg := NewToolsetGroup(false)
// Prepare toolsets
toolset1 := NewToolset("toolset1", "Feature 1")
toolset2 := NewToolset("toolset2", "Feature 2")
tsg.AddToolset(toolset1)
tsg.AddToolset(toolset2)
// Test enabling multiple toolsets
err := tsg.EnableToolsets([]string{"toolset1", "toolset2"})
if err != nil {
t.Errorf("Expected no error when enabling toolsets, got: %v", err)
}
if !tsg.IsEnabled("toolset1") {
t.Error("Expected toolset1 to be enabled")
}
if !tsg.IsEnabled("toolset2") {
t.Error("Expected toolset2 to be enabled")
}
// Test with non-existent toolset in the list
err = tsg.EnableToolsets([]string{"toolset1", "non-existent"})
if err == nil {
t.Error("Expected error when enabling list with non-existent toolset")
}
if !errors.Is(err, NewToolsetDoesNotExistError("non-existent")) {
t.Errorf("Expected ToolsetDoesNotExistError when enabling non-existent toolset, got: %v", err)
}
// Test with empty list
err = tsg.EnableToolsets([]string{})
if err != nil {
t.Errorf("Expected no error with empty toolset list, got: %v", err)
}
// Test enabling everything through EnableToolsets
tsg = NewToolsetGroup(false)
err = tsg.EnableToolsets([]string{"all"})
if err != nil {
t.Errorf("Expected no error when enabling 'all', got: %v", err)
}
if !tsg.everythingOn {
t.Error("Expected everythingOn to be true after enabling 'all' via EnableToolsets")
}
}
func TestEnableEverything(t *testing.T) {
tsg := NewToolsetGroup(false)
// Add a disabled toolset
testToolset := NewToolset("test-toolset", "A test toolset")
tsg.AddToolset(testToolset)
// Verify it's disabled
if tsg.IsEnabled("test-toolset") {
t.Error("Expected toolset to be disabled initially")
}
// Enable "all"
err := tsg.EnableToolsets([]string{"all"})
if err != nil {
t.Errorf("Expected no error when enabling 'eall', got: %v", err)
}
// Verify everythingOn was set
if !tsg.everythingOn {
t.Error("Expected everythingOn to be true after enabling 'eall'")
}
// Verify the previously disabled toolset is now enabled
if !tsg.IsEnabled("test-toolset") {
t.Error("Expected toolset to be enabled when everythingOn is true")
}
// Verify a non-existent toolset is also enabled
if !tsg.IsEnabled("non-existent") {
t.Error("Expected non-existent toolset to be enabled when everythingOn is true")
}
}
func TestIsEnabledWithEverythingOn(t *testing.T) {
tsg := NewToolsetGroup(false)
// Enable "all"
err := tsg.EnableToolsets([]string{"all"})
if err != nil {
t.Errorf("Expected no error when enabling 'all', got: %v", err)
}
// Test that any toolset name returns true with IsEnabled
if !tsg.IsEnabled("some-toolset") {
t.Error("Expected IsEnabled to return true for any toolset when everythingOn is true")
}
if !tsg.IsEnabled("another-toolset") {
t.Error("Expected IsEnabled to return true for any toolset when everythingOn is true")
}
}
func TestToolsetGroup_GetToolset(t *testing.T) {
tsg := NewToolsetGroup(false)
toolset := NewToolset("my-toolset", "desc")
tsg.AddToolset(toolset)
// Should find the toolset
got, err := tsg.GetToolset("my-toolset")
if err != nil {
t.Fatalf("expected no error, got %v", err)
}
if got != toolset {
t.Errorf("expected to get the same toolset instance")
}
// Should not find a non-existent toolset
_, err = tsg.GetToolset("does-not-exist")
if err == nil {
t.Error("expected error for missing toolset, got nil")
}
if !errors.Is(err, NewToolsetDoesNotExistError("does-not-exist")) {
t.Errorf("expected error to be ToolsetDoesNotExistError, got %v", err)
}
}