86 lines
2.7 KiB
Go
86 lines
2.7 KiB
Go
// internal/session/history_test.go
|
|
package session_test
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/mathiasbq/supervisor/internal/session"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestFormatHistoryEmpty(t *testing.T) {
|
|
result := session.FormatHistory(nil, "")
|
|
assert.Equal(t, "", result)
|
|
}
|
|
|
|
func TestFormatHistoryFormatsEntries(t *testing.T) {
|
|
entries := []session.Entry{
|
|
{
|
|
Skill: "tdd", Phase: "red", FinalStatus: "pass",
|
|
FilePath: "internal/foo/foo_test.go",
|
|
Message: "wrote failing test for Foo",
|
|
Timestamp: time.Now(),
|
|
},
|
|
}
|
|
result := session.FormatHistory(entries, "")
|
|
assert.Contains(t, result, "## Session history")
|
|
assert.Contains(t, result, "Phase: red")
|
|
assert.Contains(t, result, "wrote failing test for Foo")
|
|
assert.Contains(t, result, "internal/foo/foo_test.go")
|
|
}
|
|
|
|
func TestFormatHistoryExcludesCurrentPhase(t *testing.T) {
|
|
entries := []session.Entry{
|
|
{Skill: "tdd", Phase: "red", Message: "red done", FinalStatus: "pass"},
|
|
{Skill: "tdd", Phase: "green", Message: "green done", FinalStatus: "pass"},
|
|
}
|
|
result := session.FormatHistory(entries, "green")
|
|
assert.Contains(t, result, "red done")
|
|
assert.NotContains(t, result, "green done")
|
|
}
|
|
|
|
func TestPrependHistoryNoSessionID(t *testing.T) {
|
|
result := session.PrependHistory("", "", "review", "do the task")
|
|
assert.Equal(t, "do the task", result)
|
|
}
|
|
|
|
func TestPrependHistoryNoLog(t *testing.T) {
|
|
dir := t.TempDir()
|
|
result := session.PrependHistory(dir, "sess-abc", "review", "do the task")
|
|
assert.Equal(t, "do the task", result)
|
|
}
|
|
|
|
func TestPrependHistoryPrependsHistory(t *testing.T) {
|
|
dir := t.TempDir()
|
|
entry := session.Entry{
|
|
SessionID: "sess-abc", Skill: "tdd", Phase: "red",
|
|
FinalStatus: "pass", Message: "wrote test",
|
|
Timestamp: time.Now(),
|
|
}
|
|
require.NoError(t, session.Append(dir, "sess-abc", entry))
|
|
|
|
result := session.PrependHistory(dir, "sess-abc", "review", "do the task")
|
|
assert.Contains(t, result, "## Session history")
|
|
assert.Contains(t, result, "wrote test")
|
|
assert.True(t, strings.HasSuffix(result, "do the task"))
|
|
}
|
|
|
|
func TestPrependHistoryExcludesCurrentPhase(t *testing.T) {
|
|
dir := t.TempDir()
|
|
require.NoError(t, session.Append(dir, "sess-abc", session.Entry{
|
|
SessionID: "sess-abc", Skill: "tdd", Phase: "red",
|
|
FinalStatus: "pass", Message: "red done", Timestamp: time.Now(),
|
|
}))
|
|
require.NoError(t, session.Append(dir, "sess-abc", session.Entry{
|
|
SessionID: "sess-abc", Skill: "tdd", Phase: "green",
|
|
FinalStatus: "pass", Message: "green done", Timestamp: time.Now(),
|
|
}))
|
|
|
|
result := session.PrependHistory(dir, "sess-abc", "green", "do the task")
|
|
assert.Contains(t, result, "red done")
|
|
assert.NotContains(t, result, "green done")
|
|
}
|