Files
kandev/apps/backend/internal/office/configloader/memory_test.go
T
2026-05-16 20:07:57 +01:00

124 lines
3.3 KiB
Go

package configloader
import (
"testing"
)
func TestWriteReadMemoryEntry(t *testing.T) {
base := setupTestWorkspace(t)
loader := NewConfigLoader(base)
if err := loader.Load(); err != nil {
t.Fatalf("Load() error: %v", err)
}
writer := NewFileWriter(base, loader)
content := "Alice is the frontend lead. Prefers TypeScript."
err := writer.WriteMemoryEntry("default", "ceo", "knowledge", "people-alice", content)
if err != nil {
t.Fatalf("WriteMemoryEntry() error: %v", err)
}
got, err := writer.ReadMemoryEntry("default", "ceo", "knowledge", "people-alice")
if err != nil {
t.Fatalf("ReadMemoryEntry() error: %v", err)
}
if got != content {
t.Errorf("content = %q, want %q", got, content)
}
}
func TestListMemoryEntries(t *testing.T) {
base := setupTestWorkspace(t)
loader := NewConfigLoader(base)
if err := loader.Load(); err != nil {
t.Fatalf("Load() error: %v", err)
}
writer := NewFileWriter(base, loader)
// Write two entries in the same layer.
if err := writer.WriteMemoryEntry("default", "ceo", "operating", "style", "Be concise."); err != nil {
t.Fatalf("write style: %v", err)
}
if err := writer.WriteMemoryEntry("default", "ceo", "operating", "tone", "Professional tone."); err != nil {
t.Fatalf("write tone: %v", err)
}
entries, err := writer.ListMemoryEntries("default", "ceo", "operating")
if err != nil {
t.Fatalf("ListMemoryEntries() error: %v", err)
}
if len(entries) != 2 {
t.Fatalf("got %d entries, want 2", len(entries))
}
keys := make(map[string]bool)
for _, e := range entries {
keys[e.Key] = true
if e.Layer != "operating" {
t.Errorf("entry layer = %q, want %q", e.Layer, "operating")
}
}
if !keys["style"] || !keys["tone"] {
t.Error("missing expected memory entries")
}
}
func TestDeleteMemoryEntry(t *testing.T) {
base := setupTestWorkspace(t)
loader := NewConfigLoader(base)
if err := loader.Load(); err != nil {
t.Fatalf("Load() error: %v", err)
}
writer := NewFileWriter(base, loader)
if err := writer.WriteMemoryEntry("default", "ceo", "knowledge", "fact", "test"); err != nil {
t.Fatalf("write: %v", err)
}
if err := writer.DeleteMemoryEntry("default", "ceo", "knowledge", "fact"); err != nil {
t.Fatalf("DeleteMemoryEntry() error: %v", err)
}
_, err := writer.ReadMemoryEntry("default", "ceo", "knowledge", "fact")
if err == nil {
t.Error("expected error reading deleted memory entry")
}
}
func TestListMemoryEntriesEmptyLayer(t *testing.T) {
base := setupTestWorkspace(t)
loader := NewConfigLoader(base)
if err := loader.Load(); err != nil {
t.Fatalf("Load() error: %v", err)
}
writer := NewFileWriter(base, loader)
// Listing a non-existent layer should return empty, not error.
entries, err := writer.ListMemoryEntries("default", "ceo", "sessions")
if err != nil {
t.Fatalf("ListMemoryEntries() error: %v", err)
}
if len(entries) != 0 {
t.Errorf("got %d entries, want 0", len(entries))
}
}
func TestDeleteNonexistentMemoryEntry(t *testing.T) {
base := setupTestWorkspace(t)
loader := NewConfigLoader(base)
if err := loader.Load(); err != nil {
t.Fatalf("Load() error: %v", err)
}
writer := NewFileWriter(base, loader)
// Should not error when deleting a non-existent entry.
if err := writer.DeleteMemoryEntry("default", "ceo", "knowledge", "nonexistent"); err != nil {
t.Fatalf("DeleteMemoryEntry() should not error: %v", err)
}
}