diff --git a/tests/domain/starter-environment-assets.test.ts b/tests/domain/starter-environment-assets.test.ts new file mode 100644 index 00000000..f2fd5246 --- /dev/null +++ b/tests/domain/starter-environment-assets.test.ts @@ -0,0 +1,60 @@ +import { describe, expect, it } from "vitest"; + +import { createEditorStore } from "../../src/app/editor-store"; +import { + STARTER_DAY_ENVIRONMENT_ASSET_ID, + STARTER_NIGHT_ENVIRONMENT_ASSET_ID +} from "../../src/assets/starter-environment-assets"; +import { createEmptyProjectDocument } from "../../src/document/scene-document"; +import { DEFAULT_NIGHT_IMAGE_ENVIRONMENT_INTENSITY } from "../../src/document/world-settings"; + +describe("starter environment assets", () => { + it("seeds starter environments and defaults untouched day and night backgrounds", () => { + const store = createEditorStore(); + const projectDocument = store.getState().projectDocument; + const world = store.getState().document.world; + + expect(projectDocument.assets[STARTER_DAY_ENVIRONMENT_ASSET_ID]).toBeDefined(); + expect(projectDocument.assets[STARTER_NIGHT_ENVIRONMENT_ASSET_ID]).toBeDefined(); + expect(world.background).toEqual({ + mode: "image", + assetId: STARTER_DAY_ENVIRONMENT_ASSET_ID, + environmentIntensity: 0.85 + }); + expect(world.timeOfDay.night.background).toEqual({ + mode: "image", + assetId: STARTER_NIGHT_ENVIRONMENT_ASSET_ID, + environmentIntensity: DEFAULT_NIGHT_IMAGE_ENVIRONMENT_INTENSITY + }); + }); + + it("does not overwrite authored scene backgrounds when adding starter environments", () => { + const projectDocument = createEmptyProjectDocument(); + const activeScene = projectDocument.scenes[projectDocument.activeSceneId]; + + activeScene.world.background = { + mode: "solid", + colorHex: "#123456" + }; + activeScene.world.timeOfDay.night.background = { + mode: "solid", + colorHex: "#05070a" + }; + + const store = createEditorStore({ + initialProjectDocument: projectDocument + }); + const world = store.getState().document.world; + + expect(store.getState().projectDocument.assets[STARTER_DAY_ENVIRONMENT_ASSET_ID]).toBeDefined(); + expect(store.getState().projectDocument.assets[STARTER_NIGHT_ENVIRONMENT_ASSET_ID]).toBeDefined(); + expect(world.background).toEqual({ + mode: "solid", + colorHex: "#123456" + }); + expect(world.timeOfDay.night.background).toEqual({ + mode: "solid", + colorHex: "#05070a" + }); + }); +});