46 lines
1.4 KiB
Go
46 lines
1.4 KiB
Go
package tdd_test
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"github.com/mathiasbq/supervisor/internal/skills/tdd"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestTDDSkillTools(t *testing.T) {
|
|
skill := tdd.New(tdd.Config{
|
|
SystemPrompt: "supervisor rules",
|
|
SkillPrompt: "tdd rules",
|
|
})
|
|
tools := skill.Tools()
|
|
names := make([]string, len(tools))
|
|
for i, tool := range tools {
|
|
names[i] = tool.Name
|
|
}
|
|
assert.ElementsMatch(t, []string{"tdd_red", "tdd_green", "tdd_refactor"}, names)
|
|
}
|
|
|
|
func TestTDDSkillHandleUnknown(t *testing.T) {
|
|
skill := tdd.New(tdd.Config{SystemPrompt: "s", SkillPrompt: "t"})
|
|
_, err := skill.Handle(context.Background(), "tdd_unknown", json.RawMessage(`{}`))
|
|
assert.ErrorContains(t, err, "unknown tool")
|
|
}
|
|
|
|
func TestTDDRedRequiresProjectRoot(t *testing.T) {
|
|
skill := tdd.New(tdd.Config{SystemPrompt: "s", SkillPrompt: "t"})
|
|
_, err := skill.Handle(context.Background(), "tdd_red", json.RawMessage(`{"spec":"add two numbers"}`))
|
|
assert.ErrorContains(t, err, "project_root")
|
|
}
|
|
|
|
func TestTDDRedRequiresSpec(t *testing.T) {
|
|
skill := tdd.New(tdd.Config{SystemPrompt: "s", SkillPrompt: "t"})
|
|
_, err := skill.Handle(context.Background(), "tdd_red", json.RawMessage(`{"project_root":"/tmp/proj"}`))
|
|
assert.ErrorContains(t, err, "spec")
|
|
}
|
|
|
|
// Ensure require is used (avoids import error).
|
|
var _ = require.New
|