Update scene document JSON tests to include terrains

This commit is contained in:
2026-04-18 20:02:02 +02:00
parent 71abf5bab9
commit 07b667e3d8

View File

@@ -9,6 +9,7 @@ import {
import { createBoxBrush, deriveBoxBrushSizeFromGeometry } from "../../src/document/brushes";
import { createScenePath } from "../../src/document/paths";
import { createDefaultProjectTimeSettings } from "../../src/document/project-time-settings";
import { createTerrain } from "../../src/document/terrains";
import {
ANIMATION_PLAYBACK_SCENE_DOCUMENT_VERSION,
ENTITY_NAMES_SCENE_DOCUMENT_VERSION,
@@ -74,6 +75,43 @@ describe("scene document JSON", () => {
expect(parseSceneDocumentJson(serializedDocument)).toEqual(document);
});
it("round-trips authored terrain foundations in the current schema", () => {
const terrain = createTerrain({
id: "terrain-roundtrip-main",
name: "Plateau",
position: {
x: -6,
y: 1,
z: -4
},
sampleCountX: 3,
sampleCountZ: 4,
cellSize: 2,
heights: [0, 0, 1, 1, 2, 3, 0, 1, 2, -1, 0, 0]
});
const document = createEmptySceneDocument({ name: "Terrain Scene" });
document.terrains[terrain.id] = terrain;
expect(parseSceneDocumentJson(serializeSceneDocument(document))).toEqual(
document
);
});
it("migrates pre-terrain scene documents by defaulting the terrain registry to empty", () => {
const legacyDocument = {
...createEmptySceneDocument({ name: "Legacy Terrainless Scene" }),
version: FOLLOW_ACTOR_PATH_SMOOTH_SCENE_DOCUMENT_VERSION
};
delete (legacyDocument as Partial<typeof legacyDocument>).terrains;
const migratedDocument = parseSceneDocumentJson(
JSON.stringify(legacyDocument)
);
expect(migratedDocument.version).toBe(SCENE_DOCUMENT_VERSION);
expect(migratedDocument.terrains).toEqual({});
});
it("round-trips authored scheduler routines in the scene document schema", () => {
const npc = createNpcEntity({
id: "entity-npc-clocksmith",