agent/pkg/agentic/prompt_version_test.go
Virgil 452c4a27c7 feat(agentic): expose prompt snapshot over MCP
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 21:57:55 +00:00

79 lines
2.5 KiB
Go

// SPDX-License-Identifier: EUPL-1.2
package agentic
import (
"context"
"testing"
core "dappco.re/go/core"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestPromptVersion_ReadPromptSnapshot_Good(t *testing.T) {
workspaceDir := t.TempDir()
prompt := "TASK: Fix tests\n\nRead CODEX.md and commit when done."
writeResult := writePromptSnapshot(workspaceDir, prompt)
require.True(t, writeResult.OK)
snapshot, err := readPromptSnapshot(workspaceDir)
require.NoError(t, err)
assert.Equal(t, promptSnapshotHash(prompt), snapshot.Hash)
assert.Contains(t, snapshot.CreatedAt, "T")
assert.Equal(t, prompt, snapshot.Content)
}
func TestPromptVersion_ReadPromptSnapshot_Bad_MissingWorkspace(t *testing.T) {
_, err := readPromptSnapshot("")
require.Error(t, err)
assert.Contains(t, err.Error(), "workspace is required")
}
func TestPromptVersion_ReadPromptSnapshot_Ugly_InvalidJson(t *testing.T) {
workspaceDir := t.TempDir()
metaDir := WorkspaceMetaDir(workspaceDir)
require.True(t, fs.EnsureDir(metaDir).OK)
require.True(t, fs.Write(core.JoinPath(metaDir, "prompt-version.json"), "{not-json").OK)
_, err := readPromptSnapshot(workspaceDir)
require.Error(t, err)
assert.Contains(t, err.Error(), "failed to parse prompt snapshot")
}
func TestPromptVersion_PromptVersionTool_Good(t *testing.T) {
workspaceDir := t.TempDir()
prompt := "TASK: Fix tests\n\nRead CODEX.md and commit when done."
require.True(t, writePromptSnapshot(workspaceDir, prompt).OK)
_, output, err := (&PrepSubsystem{}).promptVersionTool(context.Background(), nil, PromptVersionInput{
Workspace: workspaceDir,
})
require.NoError(t, err)
assert.True(t, output.Success)
assert.Equal(t, workspaceDir, output.Workspace)
assert.Equal(t, promptSnapshotHash(prompt), output.Snapshot.Hash)
}
func TestPromptVersion_PromptVersionTool_Bad_MissingWorkspace(t *testing.T) {
_, _, err := (&PrepSubsystem{}).promptVersionTool(context.Background(), nil, PromptVersionInput{})
require.Error(t, err)
assert.Contains(t, err.Error(), "workspace is required")
}
func TestPromptVersion_PromptVersionTool_Ugly_InvalidJson(t *testing.T) {
workspaceDir := t.TempDir()
metaDir := WorkspaceMetaDir(workspaceDir)
require.True(t, fs.EnsureDir(metaDir).OK)
require.True(t, fs.Write(core.JoinPath(metaDir, "prompt-version.json"), "{not-json").OK)
_, _, err := (&PrepSubsystem{}).promptVersionTool(context.Background(), nil, PromptVersionInput{
Workspace: workspaceDir,
})
require.Error(t, err)
assert.Contains(t, err.Error(), "failed to parse prompt snapshot")
}