diff --git a/tests/serialization/project-package.test.ts b/tests/serialization/project-package.test.ts index 6ef066da..e58a9d00 100644 --- a/tests/serialization/project-package.test.ts +++ b/tests/serialization/project-package.test.ts @@ -36,6 +36,12 @@ function createTestFile(bytes: Uint8Array | Buffer, name: string, type: string): } as File; } +function cloneArrayBuffer(bytes: Uint8Array): ArrayBuffer { + const clonedBytes = new Uint8Array(bytes.byteLength); + clonedBytes.set(bytes); + return clonedBytes.buffer; +} + describe("project package serialization", () => { afterEach(() => { vi.restoreAllMocks(); @@ -93,7 +99,7 @@ describe("project package serialization", () => { await storage.putAsset(imageAsset.storageKey, { files: { [imageAsset.sourceName]: { - bytes: strToU8("").buffer, + bytes: cloneArrayBuffer(strToU8("")), mimeType: imageAsset.mimeType } } @@ -145,6 +151,10 @@ describe("project package serialization", () => { vi.stubGlobal("AudioContext", MockAudioContext); vi.stubGlobal("webkitAudioContext", MockAudioContext); + const portableModelInstance = createModelInstance({ + ...importedModel.modelInstance, + id: "model-instance-portable" + }); const document = { ...createEmptySceneDocument({ name: "Portable Asset Scene" }), assets: { @@ -153,10 +163,7 @@ describe("project package serialization", () => { [audioAsset.id]: audioAsset }, modelInstances: { - [importedModel.modelInstance.id]: createModelInstance({ - ...importedModel.modelInstance, - id: "model-instance-portable" - }) + [portableModelInstance.id]: portableModelInstance } }; @@ -242,7 +249,7 @@ describe("project package serialization", () => { it("fails project load when scene.json is missing", async () => { const packageBytes = zipSync({ - "assets/readme.txt": strToU8("not a project") + "assets/readme.txt": [strToU8("not a project"), {}] }); await expect(loadProjectPackage(packageBytes, null)).rejects.toThrow("project package is missing scene.json"); @@ -271,7 +278,7 @@ describe("project package serialization", () => { } }; const packageBytes = zipSync({ - [PROJECT_PACKAGE_SCENE_PATH]: strToU8(serializeSceneDocument(document)) + [PROJECT_PACKAGE_SCENE_PATH]: [strToU8(serializeSceneDocument(document)), {}] }); await expect(loadProjectPackage(packageBytes, createInMemoryProjectAssetStorage())).rejects.toThrow(