Pulse/internal/ai/tools/docker_updates_test.go
rcourtman c93b54ce9f refactor: clean up AI tools and remove deprecated code
- Remove deprecated tool functions
- Simplify control helpers
- Clean up test files
2026-01-22 22:31:04 +00:00

66 lines
2.1 KiB
Go

package tools
import (
"context"
"encoding/json"
"errors"
"testing"
"github.com/rcourtman/pulse-go-rewrite/internal/models"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestExecuteCheckDockerUpdates(t *testing.T) {
ctx := context.Background()
exec := NewPulseToolExecutor(ExecutorConfig{})
result, err := exec.executeCheckDockerUpdates(ctx, map[string]interface{}{})
require.NoError(t, err)
assert.Equal(t, "Docker update checking not available. Ensure updates provider is configured.", result.Content[0].Text)
updatesProvider := &mockUpdatesProvider{}
exec = NewPulseToolExecutor(ExecutorConfig{UpdatesProvider: updatesProvider})
result, err = exec.executeCheckDockerUpdates(ctx, map[string]interface{}{})
require.NoError(t, err)
assert.True(t, result.IsError)
assert.Contains(t, result.Content[0].Text, "host is required")
state := models.StateSnapshot{
DockerHosts: []models.DockerHost{
{ID: "host1", Hostname: "dock1", DisplayName: "Dock One"},
},
}
updatesProvider.On("TriggerUpdateCheck", "host1").Return(DockerCommandStatus{
ID: "cmd1",
Type: "check",
Status: "queued",
}, nil).Once()
exec = NewPulseToolExecutor(ExecutorConfig{
UpdatesProvider: updatesProvider,
StateProvider: &mockStateProvider{state: state},
})
result, err = exec.executeCheckDockerUpdates(ctx, map[string]interface{}{
"host": "dock1",
})
require.NoError(t, err)
var resp DockerCheckUpdatesResponse
require.NoError(t, json.Unmarshal([]byte(result.Content[0].Text), &resp))
assert.Equal(t, "host1", resp.HostID)
assert.Equal(t, "Dock One", resp.HostName)
assert.Equal(t, "cmd1", resp.CommandID)
updatesProvider.On("TriggerUpdateCheck", "host1").Return(DockerCommandStatus{}, errors.New("boom")).Once()
exec = NewPulseToolExecutor(ExecutorConfig{
UpdatesProvider: updatesProvider,
StateProvider: &mockStateProvider{state: state},
})
result, err = exec.executeCheckDockerUpdates(ctx, map[string]interface{}{
"host": "dock1",
})
require.NoError(t, err)
assert.Contains(t, result.Content[0].Text, "Failed to trigger update check")
}