@notbnull/mcp-cursor-taskmaster
Version:
A project-scoped MCP server requiring explicit --project-dir configuration for task management, memory retrieval, and agentic workflows
70 lines • 3.15 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const memory_store_1 = require("../src/memory-store");
const promises_1 = __importDefault(require("fs/promises"));
const path_1 = __importDefault(require("path"));
const os_1 = __importDefault(require("os"));
describe("MemoryStore", () => {
let memoryStore;
let testDir;
beforeEach(async () => {
// Create a temporary directory for testing
testDir = path_1.default.join(os_1.default.tmpdir(), `rag-context-test-${Date.now()}`);
memoryStore = new memory_store_1.MemoryStore(testDir);
await memoryStore.initialize();
});
afterEach(async () => {
// Clean up
memoryStore.close();
await promises_1.default.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");
});
});
//# sourceMappingURL=memory-store.test.js.map