Files
edgeever/apps/web/src/lib/emergency-draft.test.mjs
T

42 lines
1.3 KiB
JavaScript

import { describe, expect, test } from "bun:test";
import { persistEmergencyDraft, readEmergencyDraft, removeEmergencyDraft } from "./emergency-draft";
const createStorage = () => {
const values = new Map();
return {
getItem: (key) => values.get(key) ?? null,
setItem: (key, value) => values.set(key, value),
removeItem: (key) => values.delete(key),
};
};
describe("emergency editor drafts", () => {
test("round-trips and removes a draft independently of IndexedDB", () => {
const storage = createStorage();
const draft = {
memoId: "memo-1",
expectedRevision: 3,
title: "Local title",
tagsText: "draft",
contentJson: { type: "doc", content: [] },
updatedAt: "2026-08-29T12:00:00.000Z",
};
expect(persistEmergencyDraft(draft, storage)).toBe(true);
expect(readEmergencyDraft(draft.memoId, storage)).toEqual(draft);
removeEmergencyDraft(draft.memoId, storage);
expect(readEmergencyDraft(draft.memoId, storage)).toBeNull();
});
test("fails closed when browser storage is unavailable", () => {
const storage = { setItem: () => { throw new Error("quota"); } };
expect(persistEmergencyDraft({
memoId: "memo-1",
title: "",
tagsText: "",
contentJson: { type: "doc", content: [] },
updatedAt: "2026-08-29T12:00:00.000Z",
}, storage)).toBe(false);
});
});