auto-git:

[change] tests/domain/scene-document-validation.test.ts
This commit is contained in:
2026-05-13 13:36:35 +02:00
parent 97ce4f2579
commit 6b552b35ad

View File

@@ -2303,4 +2303,101 @@ describe("validateSceneDocument", () => {
])
);
});
it("detects invalid spline corridor junctions", () => {
const path = createScenePath({ id: "path-junction-validation" });
const invalidJunction = createSplineCorridorJunction({
id: "junction-invalid",
center: { x: 0, y: 0, z: 0 },
connections: [
{ id: "connection-a", pathId: path.id, progress: 0, clipDistance: 1.5 },
{ id: "connection-b", pathId: path.id, progress: 1, clipDistance: 1.5 }
]
});
invalidJunction.kind = "wrong" as never;
invalidJunction.visible = "yes" as never;
invalidJunction.enabled = "yes" as never;
invalidJunction.center = { x: Number.NaN, y: 0, z: 0 };
invalidJunction.radius = 0;
invalidJunction.materialId = "missing-junction-material";
invalidJunction.terrainMode = "dig" as never;
invalidJunction.connections = [
{
id: "",
pathId: "missing-path",
progress: 2,
clipDistance: 0
},
{
id: "",
pathId: path.id,
progress: 0.5,
clipDistance: 1
}
];
const validation = validateSceneDocument({
...createEmptySceneDocument(),
paths: {
[path.id]: path
},
splineCorridorJunctions: {
[invalidJunction.id]: invalidJunction
}
});
expect(validation.errors).toEqual(
expect.arrayContaining([
expect.objectContaining({
code: "invalid-spline-corridor-junction-kind",
path: "splineCorridorJunctions.junction-invalid.kind"
}),
expect.objectContaining({
code: "invalid-spline-corridor-junction-visible",
path: "splineCorridorJunctions.junction-invalid.visible"
}),
expect.objectContaining({
code: "invalid-spline-corridor-junction-enabled",
path: "splineCorridorJunctions.junction-invalid.enabled"
}),
expect.objectContaining({
code: "invalid-spline-corridor-junction-center",
path: "splineCorridorJunctions.junction-invalid.center"
}),
expect.objectContaining({
code: "invalid-spline-corridor-junction-radius",
path: "splineCorridorJunctions.junction-invalid.radius"
}),
expect.objectContaining({
code: "invalid-spline-corridor-junction-material",
path: "splineCorridorJunctions.junction-invalid.materialId"
}),
expect.objectContaining({
code: "invalid-spline-corridor-junction-terrain-mode",
path: "splineCorridorJunctions.junction-invalid.terrainMode"
}),
expect.objectContaining({
code: "invalid-spline-corridor-junction-connection-id",
path: "splineCorridorJunctions.junction-invalid.connections.0.id"
}),
expect.objectContaining({
code: "invalid-spline-corridor-junction-connection-path",
path: "splineCorridorJunctions.junction-invalid.connections.0.pathId"
}),
expect.objectContaining({
code: "invalid-spline-corridor-junction-connection-progress",
path: "splineCorridorJunctions.junction-invalid.connections.0.progress"
}),
expect.objectContaining({
code: "invalid-spline-corridor-junction-connection-clip-distance",
path: "splineCorridorJunctions.junction-invalid.connections.0.clipDistance"
}),
expect.objectContaining({
code: "duplicate-spline-corridor-junction-connection-id",
path: "splineCorridorJunctions.junction-invalid.connections.1.id"
})
])
);
});
});