| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- package model
- import (
- "testing"
- "charm.land/catwalk/pkg/catwalk"
- "github.com/charmbracelet/crush/internal/config"
- "github.com/charmbracelet/crush/internal/csync"
- "github.com/charmbracelet/crush/internal/ui/common"
- "github.com/charmbracelet/crush/internal/workspace"
- "github.com/stretchr/testify/require"
- )
- func TestCurrentModelSupportsImages(t *testing.T) {
- t.Parallel()
- t.Run("returns false when config is nil", func(t *testing.T) {
- t.Parallel()
- ui := newTestUIWithConfig(t, nil)
- require.False(t, ui.currentModelSupportsImages())
- })
- t.Run("returns false when coder agent is missing", func(t *testing.T) {
- t.Parallel()
- cfg := &config.Config{
- Providers: csync.NewMap[string, config.ProviderConfig](),
- Agents: map[string]config.Agent{},
- }
- ui := newTestUIWithConfig(t, cfg)
- require.False(t, ui.currentModelSupportsImages())
- })
- t.Run("returns false when model is not found", func(t *testing.T) {
- t.Parallel()
- cfg := &config.Config{
- Providers: csync.NewMap[string, config.ProviderConfig](),
- Agents: map[string]config.Agent{
- config.AgentCoder: {Model: config.SelectedModelTypeLarge},
- },
- }
- ui := newTestUIWithConfig(t, cfg)
- require.False(t, ui.currentModelSupportsImages())
- })
- t.Run("returns true when current model supports images", func(t *testing.T) {
- t.Parallel()
- providers := csync.NewMap[string, config.ProviderConfig]()
- providers.Set("test-provider", config.ProviderConfig{
- ID: "test-provider",
- Models: []catwalk.Model{
- {ID: "test-model", SupportsImages: true},
- },
- })
- cfg := &config.Config{
- Models: map[config.SelectedModelType]config.SelectedModel{
- config.SelectedModelTypeLarge: {
- Provider: "test-provider",
- Model: "test-model",
- },
- },
- Providers: providers,
- Agents: map[string]config.Agent{
- config.AgentCoder: {Model: config.SelectedModelTypeLarge},
- },
- }
- ui := newTestUIWithConfig(t, cfg)
- require.True(t, ui.currentModelSupportsImages())
- })
- }
- func newTestUIWithConfig(t *testing.T, cfg *config.Config) *UI {
- t.Helper()
- return &UI{
- com: &common.Common{
- Workspace: &testWorkspace{cfg: cfg},
- },
- }
- }
- // testWorkspace is a minimal [workspace.Workspace] stub for unit tests.
- type testWorkspace struct {
- workspace.Workspace
- cfg *config.Config
- }
- func (w *testWorkspace) Config() *config.Config {
- return w.cfg
- }
|