19 lines
1.3 KiB
JavaScript
19 lines
1.3 KiB
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { EditorHistory, setVisibility, locate, duplicateBlock } from '../public/assets/editor-model.js';
|
|
|
|
test('visibility preserves responsive layout and migrates, undoes, redoes and resets atomically', () => {
|
|
const original = { schemaVersion: 21, title: 'Geräte', description: '', blocks: [{ id: 'section', type: 'section', layout: { width: 'full' }, style: { desktop: { display: 'flex' }, mobile: { display: 'grid' } }, children: [] }] };
|
|
const history = new EditorHistory(original);
|
|
history.change(doc => setVisibility(doc, 'section', 'mobile'));
|
|
assert.equal(history.document.schemaVersion, 22);
|
|
assert.equal(locate(history.document.blocks, 'section').block.layout.visibility, 'mobile');
|
|
history.undo(); assert.deepEqual(history.document, original);
|
|
history.redo(); assert.equal(history.document.blocks[0].layout.visibility, 'mobile');
|
|
const duplicate = history.change(doc => duplicateBlock(doc, 'section'));
|
|
assert.equal(locate(history.document.blocks, duplicate).block.layout.visibility, 'mobile');
|
|
history.change(doc => setVisibility(doc, 'section', 'all'));
|
|
assert.deepEqual(history.document.blocks[0], original.blocks[0]);
|
|
assert.throws(() => setVisibility(history.document, 'section', 'invalid'));
|
|
});
|