108 lines
3.1 KiB
Go
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")
|
|
}
|