// internal/skills/retrospective/handlers_test.go package retrospective_test import ( "context" "encoding/json" "testing" "github.com/mathiasbq/supervisor/internal/skills/retrospective" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestHandle_Retrospective_RequiresSessionID(t *testing.T) { s := retrospective.New(retrospective.Config{}) _, err := s.Handle(context.Background(), "retrospective", json.RawMessage(`{}`)) assert.Error(t, err) assert.Contains(t, err.Error(), "session_id") } func TestHandle_Retrospective_BuildsPromptWithSessionLog(t *testing.T) { var capturedTask string s := retrospective.New(retrospective.Config{ SkillPrompt: "retrospective discipline", DefaultModel: "ollama/test", SessionsDir: t.TempDir(), CompleteFunc: func(_ context.Context, _, _, user string) (string, int64, error) { capturedTask = user return "Key insight: the team resolved a tricky nil pointer issue via careful logging.", 75, nil }, }) args, _ := json.Marshal(map[string]string{"session_id": "empty-session"}) out, err := s.Handle(context.Background(), "retrospective", args) require.NoError(t, err) var result map[string]any require.NoError(t, json.Unmarshal(out, &result)) assert.Contains(t, result["text"], "nil pointer") assert.Contains(t, capturedTask, "empty-session") }