Skip to main content
Glama
memory-store.test.ts2.59 kB
import { MemoryStore } from "../src/memory-store"; import fs from "fs/promises"; import path from "path"; import os from "os"; describe("MemoryStore", () => { let memoryStore: MemoryStore; let testDir: string; beforeEach(async () => { // Create a temporary directory for testing testDir = path.join(os.tmpdir(), `rag-context-test-${Date.now()}`); memoryStore = new MemoryStore(testDir); await memoryStore.initialize(); }); afterEach(async () => { // Clean up memoryStore.close(); await fs.rm(testDir, { recursive: true, force: true }); }); test("should store and retrieve memory by key", async () => { const memory = await memoryStore.set("test-key", "test content", { tag: "test", }); expect(memory.key).toBe("test-key"); expect(memory.content).toBe("test content"); expect(memory.metadata).toEqual({ tag: "test" }); const retrieved = await memoryStore.get("test-key"); expect(retrieved).not.toBeNull(); expect(retrieved?.content).toBe("test content"); }); test("should return null for non-existent key", async () => { const result = await memoryStore.get("non-existent"); expect(result).toBeNull(); }); test("should update existing memory", async () => { await memoryStore.set("update-key", "original content"); await memoryStore.set("update-key", "updated content"); const retrieved = await memoryStore.get("update-key"); expect(retrieved?.content).toBe("updated content"); }); test("should delete memory", async () => { await memoryStore.set("delete-key", "content to delete"); const deleted = await memoryStore.delete("delete-key"); expect(deleted).toBe(true); const retrieved = await memoryStore.get("delete-key"); expect(retrieved).toBeNull(); }); test("should list memories", async () => { await memoryStore.set("key1", "content1"); await memoryStore.set("key2", "content2"); await memoryStore.set("key3", "content3"); const list = await memoryStore.list(2); expect(list).toHaveLength(2); expect(list[0].key).toBe("key3"); // Most recent first }); test("should search memories", async () => { await memoryStore.set("search1", "The quick brown fox"); await memoryStore.set("search2", "jumps over the lazy dog"); await memoryStore.set("search3", "The fox is clever"); const results = await memoryStore.search("fox"); expect(results).toHaveLength(2); expect(results.map((r) => r.key)).toContain("search1"); expect(results.map((r) => r.key)).toContain("search3"); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/notbnull/mcp-rag-context'

If you have feedback or need assistance with the MCP directory API, please join our Discord server