Files
Memoh/internal/memory/adapters/mem0/client_test.go
T
晨苒 627b673a5c refactor: multi-provider memory adapters with scan-based builtin (#227)
* refactor: restructure memory into multi-provider adapters, remove manifest.json dependency

- Rename internal/memory/provider to internal/memory/adapters with per-provider subdirectories (builtin, mem0, openviking)
- Replace manifest.json-based delete/update with scan-based index from daily files
- Add mem0 and openviking provider adapters with HTTP client, chat hooks, MCP tools, and CRUD
- Wire provider lifecycle into registry (auto-instantiate on create, evict on update/delete)
- Split docker-compose into base stack + optional overlays (qdrant, browser, mem0, openviking)
- Update admin UI to support dynamic provider config schema rendering

* chore(lint): fix all golangci-lint issues for clean CI

* refactor(docker): replace compose overlay files with profiles

* feat(memory): add built-in memory multi modes

* fix(ci): golangci lint

* feat(memory): edit built-in memory sparse design
2026-03-14 06:04:13 +08:00

79 lines
1.7 KiB
Go

package mem0
import "testing"
func TestNewMem0ClientDefaultsToSaaS(t *testing.T) {
t.Parallel()
client, err := newMem0Client(map[string]any{
"api_key": "test-key",
})
if err != nil {
t.Fatalf("newMem0Client() error = %v", err)
}
if client.baseURL != mem0DefaultBaseURL {
t.Fatalf("baseURL = %q, want %q", client.baseURL, mem0DefaultBaseURL)
}
}
func TestParseMem0AddMemoriesSupportsEventResponses(t *testing.T) {
t.Parallel()
body := []byte(`[
{
"id": "mem_123",
"event": "ADD",
"data": {
"memory": "The user likes oolong tea."
}
}
]`)
memories, err := parseMem0AddMemories(body)
if err != nil {
t.Fatalf("parseMem0AddMemories() error = %v", err)
}
if len(memories) != 1 {
t.Fatalf("len(memories) = %d, want 1", len(memories))
}
if memories[0].ID != "mem_123" {
t.Fatalf("memory id = %q, want %q", memories[0].ID, "mem_123")
}
if memories[0].Memory != "The user likes oolong tea." {
t.Fatalf("memory text = %q", memories[0].Memory)
}
}
func TestParseMem0MemoriesSupportsEnvelopeResponses(t *testing.T) {
t.Parallel()
body := []byte(`{
"results": [
{
"id": "mem_456",
"memory": "The user lives in Shanghai.",
"score": 0.92,
"agent_id": "bot-1",
"run_id": "run-1",
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-02T00:00:00Z"
}
],
"total": 1
}`)
memories, err := parseMem0Memories(body)
if err != nil {
t.Fatalf("parseMem0Memories() error = %v", err)
}
if len(memories) != 1 {
t.Fatalf("len(memories) = %d, want 1", len(memories))
}
if memories[0].Score != 0.92 {
t.Fatalf("score = %v, want 0.92", memories[0].Score)
}
if memories[0].AgentID != "bot-1" {
t.Fatalf("agent_id = %q, want %q", memories[0].AgentID, "bot-1")
}
}