Versie 0.2.0
This commit is contained in:
commit
e77d8fd373
495 files changed
+81026
No files matched your search
@@ -0,0 +1,106 @@
|
||||
// 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));
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user