Files
KantSites/tests/visibility.test.mjs
kantarci 37c2942d1d
CMS quality / php (8.2) (push) Canceled after 0s
CMS quality / php (8.4) (push) Canceled after 0s
CMS quality / browser (push) Canceled after 0s
CMS quality / mysql (push) Canceled after 0s
Add device visibility and responsive navigation for 1.10.0
2026-09-14 14:46:55 +02:00

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'));
});