agent/pkg/agentic/plan_compat_test.go
Virgil 8f8e0f09ca feat(agentic): add plan retention cleanup command
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 10:48:13 +00:00

108 lines
3.1 KiB
Go

// SPDX-License-Identifier: EUPL-1.2
package agentic
import (
"context"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestPlancompat_PlanCreateCompat_Good(t *testing.T) {
dir := t.TempDir()
t.Setenv("CORE_WORKSPACE", dir)
s := newTestPrep(t)
_, output, err := s.planCreateCompat(context.Background(), nil, PlanCreateInput{
Title: "Compatibility Plan",
Description: "Match the slug-first RFC surface",
Phases: []Phase{
{Name: "Setup", Tasks: []PlanTask{{Title: "Review RFC"}}},
},
})
require.NoError(t, err)
assert.True(t, output.Success)
assert.Contains(t, output.Plan.Slug, "compatibility-plan")
assert.Equal(t, "draft", output.Plan.Status)
assert.Equal(t, 1, output.Plan.Phases)
}
func TestPlancompat_PlanGetCompat_Good_BySlug(t *testing.T) {
dir := t.TempDir()
t.Setenv("CORE_WORKSPACE", dir)
s := newTestPrep(t)
_, created, err := s.planCreate(context.Background(), nil, PlanCreateInput{
Title: "Get Compat",
Description: "Read by slug",
Phases: []Phase{
{Name: "Setup", Tasks: []PlanTask{{Title: "Review RFC", Status: "completed"}, {Title: "Patch code"}}},
},
})
require.NoError(t, err)
plan, err := readPlan(PlansRoot(), created.ID)
require.NoError(t, err)
_, output, err := s.planGetCompat(context.Background(), nil, PlanReadInput{Slug: plan.Slug})
require.NoError(t, err)
assert.True(t, output.Success)
assert.Equal(t, plan.Slug, output.Plan.Slug)
assert.Equal(t, 2, output.Plan.Progress.Total)
assert.Equal(t, 1, output.Plan.Progress.Completed)
assert.Equal(t, 50, output.Plan.Progress.Percentage)
}
func TestPlancompat_PlanUpdateStatusCompat_Good(t *testing.T) {
dir := t.TempDir()
t.Setenv("CORE_WORKSPACE", dir)
s := newTestPrep(t)
_, created, err := s.planCreate(context.Background(), nil, PlanCreateInput{
Title: "Status Compat",
Description: "Update by slug",
})
require.NoError(t, err)
plan, err := readPlan(PlansRoot(), created.ID)
require.NoError(t, err)
_, output, err := s.planUpdateStatusCompat(context.Background(), nil, PlanStatusUpdateInput{
Slug: plan.Slug,
Status: "active",
})
require.NoError(t, err)
assert.True(t, output.Success)
assert.Equal(t, "active", output.Plan.Status)
}
func TestPlancompat_PlanArchiveCompat_Good(t *testing.T) {
dir := t.TempDir()
t.Setenv("CORE_WORKSPACE", dir)
s := newTestPrep(t)
_, created, err := s.planCreate(context.Background(), nil, PlanCreateInput{
Title: "Archive Compat",
Description: "Archive by slug",
})
require.NoError(t, err)
plan, err := readPlan(PlansRoot(), created.ID)
require.NoError(t, err)
_, output, err := s.planArchiveCompat(context.Background(), nil, PlanDeleteInput{
Slug: plan.Slug,
Reason: "No longer needed",
})
require.NoError(t, err)
assert.True(t, output.Success)
assert.Equal(t, plan.Slug, output.Archived)
archivedPlan, err := readPlan(PlansRoot(), plan.Slug)
require.NoError(t, err)
assert.Equal(t, "archived", archivedPlan.Status)
assert.False(t, archivedPlan.ArchivedAt.IsZero())
assert.Contains(t, archivedPlan.Notes, "No longer needed")
}