Co-authored-by: Cursor <[email protected]>
This commit is contained in:
lejay
2026-05-28 07:20:38 +02:00
co-authored by Cursor
parent 6923c319a1
commit 6c0d7e47b8
81 changed files with 21780 additions and 2986 deletions
+49
View File
@@ -0,0 +1,49 @@
import assert from 'node:assert/strict';
import { validateConfig } from '../services/configValidation.js';
import { generateCuttingList } from '../services/cuttingEngine.js';
function run() {
const baseConfig = {
installationType: 'free',
widthMm: 2400,
heightMm: 2400,
depthMm: 610,
plinthHeightMm: 100,
modules: [{ type: 'tiroirs', widthMm: 900, drawers: 3, hasRod: false }],
doorType: 'hinged',
hardware: {
handleBoreHeightMm: 1000,
drawerType: 'visible'
}
};
const okValidation = validateConfig(baseConfig, { allow_sliding_doors: '0' });
assert.equal(okValidation.errors.length, 0, 'Base config should be valid');
const invalidDrawerConfig = {
...baseConfig,
modules: [{ type: 'tiroirs', widthMm: 1201, drawers: 2, hasRod: false }]
};
const invalidDrawerValidation = validateConfig(invalidDrawerConfig, {});
assert.ok(
invalidDrawerValidation.errors.some((e) => String(e.message).includes('1000')),
'Drawer width limit should trigger validation error'
);
const nonStandardHandle = {
...baseConfig,
hardware: { ...baseConfig.hardware, handleBoreHeightMm: 1450 }
};
const nonStandardHandleValidation = validateConfig(nonStandardHandle, {});
assert.ok(nonStandardHandleValidation.warnings.length > 0, 'Handle warning should be emitted');
const cuttingList = generateCuttingList(baseConfig, {}, baseConfig.modules);
const sidePiece = cuttingList.pieces.find((p) => p.elementType === 'cotes');
assert.ok(sidePiece?.machining?.groove, 'Side piece should include groove machining');
assert.equal(sidePiece.machining.groove.width, 9, 'Groove width should be 9mm');
assert.equal(sidePiece.machining.groove.depth, 10.5, 'Groove depth should be 10.5mm');
assert.equal(sidePiece.machining.groove.axisFromPanelEdge, 16, 'Groove position should be 16mm from edge');
}
run();
console.log('rules.spec.mjs: all assertions passed');