Skip to main content
Glama
test_helpers.go3 kB
package tui import ( "fmt" "os" "testing" "time" tea "github.com/charmbracelet/bubbletea" "github.com/standardbeagle/brummer/internal/config" "github.com/standardbeagle/brummer/internal/logs" "github.com/standardbeagle/brummer/internal/process" "github.com/standardbeagle/brummer/pkg/events" ) // createTestModelWithDefaults creates a minimal Model for testing func createTestModelWithDefaults() *Model { // Create minimal dependencies eventBus := events.NewEventBus() logStore := logs.NewStore(100, eventBus) // Create a temporary directory with a minimal package.json for testing tempDir, err := os.MkdirTemp("", "brummer-test-*") if err != nil { panic(fmt.Sprintf("Failed to create temp directory: %v", err)) } // Create minimal package.json packageJson := `{ "name": "test-project", "version": "1.0.0", "scripts": { "test": "echo \"test script\"" } }` err = os.WriteFile(fmt.Sprintf("%s/package.json", tempDir), []byte(packageJson), 0644) if err != nil { panic(fmt.Sprintf("Failed to create test package.json: %v", err)) } processMgr, err := process.NewManager(tempDir, eventBus, true) if err != nil { panic(fmt.Sprintf("Failed to create test process manager: %v", err)) } // Create config defaultProvider := "claude" cfg := &config.Config{ AICoders: &config.AICoderConfig{ DefaultProvider: &defaultProvider, Providers: map[string]*config.ProviderConfig{ "claude": {}, "terminal": {}, }, }, } // Use NewModel to create a properly initialized model return NewModel(processMgr, logStore, eventBus, nil, nil, 7777, cfg) } // TestMessage is a test implementation of tea.Msg type TestMessage struct { Content string } // Removed createTestModelWithMockDependencies - use createTestModelWithDefaults instead // createTestProcessManager creates a real process manager for testing // This is only used when we need to test process-specific behavior // For most tests, use createTestModelWithDefaults() which includes a real process manager func createTestProcessManager(t *testing.T) *process.Manager { eventBus := events.NewEventBus() mgr, err := process.NewManager(t.TempDir(), eventBus, true) if err != nil { t.Fatalf("Failed to create test process manager: %v", err) } return mgr } // createTestLogStore creates a real log store for testing // For most tests, use createTestModelWithDefaults() which includes a real log store func createTestLogStore(eventBus *events.EventBus) *logs.Store { return logs.NewStore(100, eventBus) } // waitForMessage is a helper to wait for a specific message type on a channel func waitForMessage[T any](t *testing.T, ch <-chan tea.Msg, timeout time.Duration) T { t.Helper() select { case msg := <-ch: if typedMsg, ok := msg.(T); ok { return typedMsg } var zero T t.Fatalf("Expected message of type %T but got %T", zero, msg) return zero case <-time.After(timeout): var zero T t.Fatalf("Timeout waiting for message of type %T", zero) return zero } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/standardbeagle/brummer'

If you have feedback or need assistance with the MCP directory API, please join our Discord server