Files
webeditor3d/tests/domain/create-whitebox-primitives.command.test.ts

68 lines
1.8 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { createEditorStore } from "../../src/app/editor-store";
import { createCreateRadialPrismBrushCommand } from "../../src/commands/create-radial-prism-brush-command";
import { createCreateWedgeBrushCommand } from "../../src/commands/create-wedge-brush-command";
describe("whitebox primitive creation commands", () => {
it("creates a wedge brush with undo and redo", () => {
const store = createEditorStore();
store.executeCommand(
createCreateWedgeBrushCommand({
center: {
x: 2.2,
y: 1.4,
z: -1.1
},
size: {
x: 4.2,
y: 2.1,
z: 6.2
}
})
);
const brush = Object.values(store.getState().document.brushes)[0];
expect(brush.kind).toBe("wedge");
expect(Object.keys(brush.faces)).toEqual([
"bottom",
"back",
"slope",
"left",
"right"
]);
expect(store.getState().selection).toEqual({
kind: "brushes",
ids: [brush.id]
});
expect(store.undo()).toBe(true);
expect(store.getState().document.brushes).toEqual({});
expect(store.redo()).toBe(true);
expect(store.getState().document.brushes[brush.id]).toEqual(brush);
});
it("creates a cylinder brush as a 12-sided radial prism", () => {
const store = createEditorStore();
store.executeCommand(
createCreateRadialPrismBrushCommand({
sideCount: 12
})
);
const brush = Object.values(store.getState().document.brushes)[0];
expect(brush.kind).toBe("radialPrism");
if (brush.kind !== "radialPrism") {
throw new Error("Expected a radial prism brush.");
}
expect(brush.sideCount).toBe(12);
expect(Object.keys(brush.faces)).toHaveLength(14);
});
});