// Generated, do not edit. sha256:1729f1063610ec96b3aae049d2a0af2d802f2e19ff07d46ca27d855e2891faac import { describe, it } from 'node:test'; import assert from 'node:assert/strict'; import { freeRunAt, fittingCatalog, placeInRun } from '../../client/dashboard/free-space.js'; import { DASHBOARD } from '../../shared/config.js'; const LAYOUT = [ { x: 0, y: 0, w: 3, h: 3 }, { x: 6, y: 0, w: 4, h: 2 }, { x: 6, y: 2, w: 4, h: 5 }, ]; const hoogte = it => it.h; describe('freeRunAt', () => { it('geeft het vrije stuk tussen twee widgets, met de kolom onder de muis', () => { assert.deepEqual(freeRunAt(LAYOUT, 4, 0, hoogte), { x: 3, y: 0, w: 3, col: 4 }); }); it('loopt door tot de rand van het raster', () => { assert.deepEqual(freeRunAt(LAYOUT, 11, 1, hoogte), { x: 10, y: 1, w: 2, col: 11 }); }); it('telt de hoogte van een widget mee: rij 4 is links vrij, maar niet over de hoge widget heen', () => { assert.deepEqual(freeRunAt(LAYOUT, 0, 4, hoogte), { x: 0, y: 4, w: 6, col: 0 }); }); it('geeft niets op een bezette plek, ook niet in de laatste rij van een widget', () => { assert.equal(freeRunAt(LAYOUT, 1, 2, hoogte), null); assert.equal(freeRunAt(LAYOUT, 7, 6, hoogte), null); }); it('onder de hele indeling is de rij helemaal vrij', () => { assert.deepEqual(freeRunAt(LAYOUT, 5, 7, hoogte), { x: 0, y: 7, w: DASHBOARD.GRID_COLUMNS, col: 5 }); }); it('geeft niets buiten het raster', () => { assert.equal(freeRunAt(LAYOUT, -1, 0, hoogte), null); assert.equal(freeRunAt(LAYOUT, DASHBOARD.GRID_COLUMNS, 0, hoogte), null); assert.equal(freeRunAt(LAYOUT, 4, -1, hoogte), null); }); }); describe('fittingCatalog', () => { const typen = Object.entries(DASHBOARD.WIDGETS).sort((a, b) => a[1].defaultSpan - b[1].defaultSpan); const [smal, smalDef] = typen[0]; const [breed, breedDef] = typen[typen.length - 1]; const CATALOGUS = [{ type: smal }, { type: breed }, { type: 'bestaat-niet' }]; it('biedt alleen aan wat in de vrije breedte past', () => { assert.ok(smalDef.defaultSpan < breedDef.defaultSpan, 'de registry heeft geen twee breedtes meer'); const run = { x: 0, y: 0, w: smalDef.defaultSpan, col: 0 }; assert.deepEqual(fittingCatalog(CATALOGUS, run).map(c => c.type), [smal]); }); it('precies even breed past nog', () => { const run = { x: 0, y: 0, w: breedDef.defaultSpan, col: 0 }; assert.deepEqual(fittingCatalog(CATALOGUS, run).map(c => c.type), [smal, breed]); }); it('laat een type weg dat de registry niet kent', () => { const run = { x: 0, y: 0, w: DASHBOARD.GRID_COLUMNS, col: 0 }; assert.ok(!fittingCatalog(CATALOGUS, run).some(c => c.type === 'bestaat-niet')); }); }); describe('placeInRun', () => { const run = { x: 2, y: 5, w: 6, col: 4 }; it('zet de widget onder de muis', () => { assert.deepEqual(placeInRun(run, 2), { x: 4, y: 5 }); }); it('schuift hem terug als hij rechts over het vrije stuk heen zou gaan', () => { assert.deepEqual(placeInRun({ ...run, col: 7 }, 3), { x: 5, y: 5 }); }); it('blijft binnen het stuk, ook als de muis links ervan stond', () => { assert.deepEqual(placeInRun({ ...run, col: 0 }, 3), { x: 2, y: 5 }); }); });