agent/pkg/agentic/commands_resume_test.go
Virgil 3a9834ec03 feat(agentic): add resume command alias
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:59:52 +00:00

71 lines
2.2 KiB
Go

// SPDX-License-Identifier: EUPL-1.2
package agentic
import (
"testing"
core "dappco.re/go/core"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestCommandsResume_CmdResume_Good_DryRun(t *testing.T) {
s, _ := testPrepWithCore(t, nil)
workspaceDir := core.JoinPath(WorkspaceRoot(), "core", "go-io", "task-42")
require.True(t, fs.EnsureDir(core.JoinPath(workspaceDir, "repo", ".git")).OK)
require.True(t, fs.Write(core.JoinPath(workspaceDir, "status.json"), core.JSONMarshalString(WorkspaceStatus{
Status: "blocked",
Agent: "codex",
Repo: "go-io",
Task: "Fix the failing tests",
})).OK)
result := s.cmdResume(core.NewOptions(
core.Option{Key: "workspace", Value: "core/go-io/task-42"},
core.Option{Key: "answer", Value: "Use the new Core API"},
core.Option{Key: "dry_run", Value: true},
))
require.True(t, result.OK)
output, ok := result.Value.(ResumeOutput)
require.True(t, ok)
assert.Equal(t, "core/go-io/task-42", output.Workspace)
assert.Equal(t, "codex", output.Agent)
assert.Contains(t, output.Prompt, "Fix the failing tests")
assert.Contains(t, output.Prompt, "Use the new Core API")
}
func TestCommandsResume_CmdResume_Bad_MissingWorkspace(t *testing.T) {
s, _ := testPrepWithCore(t, nil)
result := s.cmdResume(core.NewOptions())
assert.False(t, result.OK)
require.Error(t, result.Value.(error))
assert.Contains(t, result.Value.(error).Error(), "workspace is required")
}
func TestCommandsResume_CmdResume_Ugly_CorruptStatus(t *testing.T) {
s, _ := testPrepWithCore(t, nil)
workspaceDir := core.JoinPath(WorkspaceRoot(), "core", "go-io", "task-42")
require.True(t, fs.EnsureDir(core.JoinPath(workspaceDir, "repo", ".git")).OK)
require.True(t, fs.Write(core.JoinPath(workspaceDir, "status.json"), "{broken json").OK)
result := s.cmdResume(core.NewOptions(core.Option{Key: "_arg", Value: "core/go-io/task-42"}))
assert.False(t, result.OK)
require.Error(t, result.Value.(error))
assert.Contains(t, result.Value.(error).Error(), "no status.json in workspace")
}
func TestCommandsResume_RegisterCommands_Good(t *testing.T) {
s, c := testPrepWithCore(t, nil)
s.registerCommands(c.Context())
assert.Contains(t, c.Commands(), "resume")
assert.Contains(t, c.Commands(), "agentic:resume")
}