auto-git:
[change] tests/domain/scene-document-validation.test.ts
This commit is contained in:
@@ -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"
|
||||||
|
})
|
||||||
|
])
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user