Files
hyperguild/internal/skills/sessionlog/handlers_test.go
Mathias Bergqvist 9cfce8f700 feat: add tier and session_log MCP tools
Adds two new MCP skill packages:
- internal/skills/org: exposes the tier tool, calling an injected TierFn
  for testability; returns current operating tier as structured JSON
- internal/skills/sessionlog: exposes the session_log tool, appending
  structured JSONL entries to brain/sessions/{session_id}.jsonl; requires
  session_id, wraps internal/session.Append

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 20:40:50 +02:00

45 lines
1.2 KiB
Go

// internal/skills/sessionlog/handlers_test.go
package sessionlog_test
import (
"context"
"encoding/json"
"os"
"path/filepath"
"testing"
"github.com/mathiasbq/supervisor/internal/skills/sessionlog"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestHandle_SessionLog_AppendsEntry(t *testing.T) {
dir := t.TempDir()
s := sessionlog.New(sessionlog.Config{SessionsDir: dir})
args, _ := json.Marshal(map[string]any{
"session_id": "sess-abc",
"skill": "tdd_green",
"final_status": "pass",
"model_used": "ollama/qwen3",
"duration_ms": 3000,
})
out, err := s.Handle(context.Background(), "session_log", args)
require.NoError(t, err)
var result map[string]string
require.NoError(t, json.Unmarshal(out, &result))
assert.Equal(t, "ok", result["status"])
// Verify file written
data, err := os.ReadFile(filepath.Join(dir, "sess-abc.jsonl"))
require.NoError(t, err)
assert.Contains(t, string(data), "tdd_green")
}
func TestHandle_SessionLog_RequiresSessionID(t *testing.T) {
s := sessionlog.New(sessionlog.Config{SessionsDir: t.TempDir()})
args, _ := json.Marshal(map[string]any{"skill": "tdd_red"})
_, err := s.Handle(context.Background(), "session_log", args)
assert.Error(t, err)
}