// Generated, do not edit. sha256:3ce212b10cde11e15f4155e3be716fe82cb375098c6eff82a6ff3030ea67f950 import { describe, it, beforeEach, mock } from 'node:test'; import assert from 'node:assert/strict'; let opgeslagen; let bewaardeWaarde; let leesFout = false; mock.module('../../client/data/preferences.js', { namedExports: { async getPref(scope, key, fallback) { if (leesFout) throw new Error('database weg'); return bewaardeWaarde === undefined ? fallback : bewaardeWaarde; }, async setPref(scope, key, value) { opgeslagen = { scope, key, value }; }, }, }); const { expanders } = await import('../../client/ui/expand.js'); beforeEach(() => { opgeslagen = undefined; bewaardeWaarde = undefined; leesFout = false; }); describe('expanders: de standaard en de keuze', () => { it('volgt de standaard zolang de gebruiker niets koos', async () => { const e = await expanders('ai', { connect: true, dryRun: false }); assert.equal(e.open('connect'), true); assert.equal(e.open('dryRun'), false); }); it('laat de keuze van de gebruiker vóór de standaard gaan', async () => { bewaardeWaarde = { connect: false, dryRun: true }; const e = await expanders('ai', { connect: true, dryRun: false }); assert.equal(e.open('connect'), false, 'de gebruiker klapte dit kader dicht'); assert.equal(e.open('dryRun'), true, 'en dit kader open'); }); it('vult aan met de standaard voor een kader dat nog niet bewaard is', async () => { bewaardeWaarde = { connect: false }; const e = await expanders('ai', { connect: true, dryRun: true }); assert.equal(e.open('dryRun'), true); }); it('valt terug op de standaard als het lezen mislukt', async () => { leesFout = true; const e = await expanders('ai', { connect: true }); assert.equal(e.open('connect'), true, 'view-state mag een pagina niet tegenhouden'); }); it('negeert een bewaarde waarde die geen object is', async () => { bewaardeWaarde = 'kapot'; const e = await expanders('ai', { connect: true }); assert.equal(e.open('connect'), true); }); }); describe('expanders: de attributen voor de markup', () => { it('zet open alleen bij een open kader', async () => { bewaardeWaarde = { connect: true, dryRun: false }; const e = await expanders('ai', {}); assert.equal(e.attr('connect'), 'data-expand="connect" open'); assert.equal(e.attr('dryRun'), 'data-expand="dryRun"'); }); it('draagt de naam mee, want daarop wordt de stand onthouden', async () => { const e = await expanders('ai', {}); assert.match(e.attr('watDanOok'), /data-expand="watDanOok"/); }); }); describe('expanders: het wegschrijven', () => { function nepKader(naam, open) { const luisteraars = []; return { dataset: { expand: naam }, open, addEventListener(soort, fn) { if (soort === 'toggle') luisteraars.push(fn); }, klap(nieuw) { this.open = nieuw; luisteraars.forEach(fn => fn()); }, }; } const nepHost = kaders => ({ querySelectorAll: () => kaders }); it('schrijft de hele stand weg onder de paginasleutel', async () => { const e = await expanders('ai', { connect: true, dryRun: false }); const kader = nepKader('dryRun', false); e.bind(nepHost([kader])); kader.klap(true); assert.equal(opgeslagen.scope, 'expand'); assert.equal(opgeslagen.key, 'ai'); assert.deepEqual(opgeslagen.value, { connect: true, dryRun: true }, 'de andere kaders horen mee te gaan, anders wist elke klap de rest'); }); it('luistert op toggle en niet op een klik, zodat het toetsenbord ook telt', async () => { const e = await expanders('ai', {}); const kader = nepKader('connect', false); let soorten = []; kader.addEventListener = (soort, fn) => { soorten.push(soort); if (soort === 'toggle') fn(); }; e.bind(nepHost([kader])); assert.deepEqual(soorten, ['toggle']); }); it('doet niets bij een host die er niet is', async () => { const e = await expanders('ai', {}); assert.doesNotThrow(() => e.bind(null)); }); });