auto-git:

[change] tests/serialization/editor-draft-storage.test.ts
This commit is contained in:
2026-05-01 18:55:45 +02:00
parent b53564423d
commit 6361c72dfe

View File

@@ -10,7 +10,10 @@ import {
saveSceneDocumentDraft,
type KeyValueStorage
} from "../../src/serialization/local-draft-storage";
import { MemoryEditorDraftStorage } from "../../src/serialization/editor-draft-storage";
import {
MemoryEditorDraftStorage,
createBrowserEditorDraftStorage
} from "../../src/serialization/editor-draft-storage";
import { createDefaultViewportLayoutState } from "../../src/viewport-three/viewport-layout";
class MemoryStorage implements KeyValueStorage {
@@ -140,6 +143,36 @@ describe("editor draft storage", () => {
);
});
it("uses localStorage fallback storage when IndexedDB is unavailable", async () => {
const legacyStorage = new MemoryStorage();
const result = await createBrowserEditorDraftStorage({
legacyStorage,
indexedDb: null
});
expect(result.storage).not.toBeNull();
expect(result.diagnostic).toContain("IndexedDB autosave is unavailable");
await result.storage?.saveDocumentDraft(
createProjectDocumentFromSceneDocument(
createEmptySceneDocument({ name: "Fallback Draft" })
)
);
const recoveredResult = await result.storage?.loadDraft();
expect(recoveredResult?.status).toBe("loaded");
if (recoveredResult?.status !== "loaded") {
return;
}
expect(
recoveredResult.document.scenes[recoveredResult.document.activeSceneId]
?.name
).toBe("Fallback Draft");
});
it("saves viewport-only drafts without requiring document validation", async () => {
const storage = new MemoryEditorDraftStorage();
const viewportLayoutState = createDefaultViewportLayoutState();