From 9f27d04c084c01a28da42d9efb6733caa16a3fa3 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Wed, 22 Apr 2026 15:28:39 +0200 Subject: [PATCH] auto-git: [change] tests/domain/scene-document-validation.test.ts --- .../domain/scene-document-validation.test.ts | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/tests/domain/scene-document-validation.test.ts b/tests/domain/scene-document-validation.test.ts index cd17848e..28162043 100644 --- a/tests/domain/scene-document-validation.test.ts +++ b/tests/domain/scene-document-validation.test.ts @@ -1149,6 +1149,42 @@ describe("validateSceneDocument", () => { ); }); + it("detects invalid shader sky settings and rejects phase-local shader backgrounds", () => { + const document = createEmptySceneDocument(); + document.world.background = { + mode: "shader" + }; + document.world.shaderSky.dayTopColorHex = "bad-color" as `#${string}`; + document.world.shaderSky.celestial.sunDiscSizeDegrees = 0; + document.world.shaderSky.clouds.coverage = 2; + document.world.timeOfDay.dawn.background = { + mode: "shader" + } as (typeof document.world.timeOfDay.dawn.background); + + const validation = validateSceneDocument(document); + + expect(validation.errors).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + code: "invalid-world-shader-sky-day-top-color", + path: "world.shaderSky.dayTopColorHex" + }), + expect.objectContaining({ + code: "invalid-world-shader-sky-sun-disc-size", + path: "world.shaderSky.celestial.sunDiscSizeDegrees" + }), + expect.objectContaining({ + code: "invalid-world-shader-sky-cloud-coverage", + path: "world.shaderSky.clouds.coverage" + }), + expect.objectContaining({ + code: "invalid-dawn-background-mode", + path: "world.timeOfDay.dawn.background.mode" + }) + ]) + ); + }); + it("detects invalid advanced rendering settings", () => { const document = createEmptySceneDocument(); document.world.advancedRendering = {