Files
famapp/tests/unit/assistant-chat-storage.test.ts
T
ginnoir a09747c314
CI / checks (push) Failing after 2m7s
CI / build (push) Successful in 4m36s
feat: journal dashboard widgets, agent polish, and edit-mode live previews
Journal dashboard widgets and quick-add; rich-text quick-add dialogs.

Dashboard draft sync for live edit previews; assistant bubble + API tools.

Journal UX: stress slider, mood grid, query cap fix.
2026-07-04 22:03:45 -05:00

53 lines
1.5 KiB
TypeScript

import assert from "node:assert/strict";
import { describe, it } from "node:test";
import {
clearAssistantChat,
loadAssistantChat,
saveAssistantChat,
} from "../../src/modules/agent/assistant-chat-storage";
const storage = new Map<string, string>();
Object.defineProperty(globalThis, "localStorage", {
value: {
getItem: (key: string) => storage.get(key) ?? null,
setItem: (key: string, value: string) => {
storage.set(key, value);
},
removeItem: (key: string) => {
storage.delete(key);
},
},
configurable: true,
});
describe("assistant chat storage", () => {
it("round-trips messages per user", () => {
storage.clear();
const userId = "user-a";
const messages = [
{ role: "user" as const, content: "hello" },
{ role: "assistant" as const, content: "hi there" },
];
saveAssistantChat(userId, messages);
assert.deepEqual(loadAssistantChat(userId), messages);
});
it("keeps sessions isolated by user id", () => {
storage.clear();
saveAssistantChat("user-a", [{ role: "user", content: "for a" }]);
saveAssistantChat("user-b", [{ role: "user", content: "for b" }]);
assert.deepEqual(loadAssistantChat("user-a"), [{ role: "user", content: "for a" }]);
assert.deepEqual(loadAssistantChat("user-b"), [{ role: "user", content: "for b" }]);
});
it("clears stored chat", () => {
storage.clear();
saveAssistantChat("user-a", [{ role: "user", content: "hello" }]);
clearAssistantChat("user-a");
assert.deepEqual(loadAssistantChat("user-a"), []);
});
});