auto-git:
[change] tests/serialization/editor-draft-storage.test.ts
This commit is contained in:
@@ -10,7 +10,10 @@ import {
|
|||||||
saveSceneDocumentDraft,
|
saveSceneDocumentDraft,
|
||||||
type KeyValueStorage
|
type KeyValueStorage
|
||||||
} from "../../src/serialization/local-draft-storage";
|
} 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";
|
import { createDefaultViewportLayoutState } from "../../src/viewport-three/viewport-layout";
|
||||||
|
|
||||||
class MemoryStorage implements KeyValueStorage {
|
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 () => {
|
it("saves viewport-only drafts without requiring document validation", async () => {
|
||||||
const storage = new MemoryEditorDraftStorage();
|
const storage = new MemoryEditorDraftStorage();
|
||||||
const viewportLayoutState = createDefaultViewportLayoutState();
|
const viewportLayoutState = createDefaultViewportLayoutState();
|
||||||
|
|||||||
Reference in New Issue
Block a user