89 lines
3.3 KiB
JavaScript
89 lines
3.3 KiB
JavaScript
// Generated, do not edit. sha256:bd286c1811389fc704e1fb7d0c5403e1bc83b9a7d21ab777de72f7aae17ec2e2
|
|
import { describe, it, mock } from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { installDom } from '../helpers/mini-dom.mjs';
|
|
|
|
const dom = installDom();
|
|
|
|
const INSTELLING = { blur: 1, auto_blur_min: 999999 };
|
|
const geschreven = [];
|
|
mock.module('../../client/app-settings.js', {
|
|
namedExports: {
|
|
appSetting: k => INSTELLING[k],
|
|
setAppSetting: async (k, v) => { INSTELLING[k] = v; geschreven.push([k, v]); },
|
|
baseCurrency: () => 'EUR',
|
|
},
|
|
});
|
|
|
|
const { configureSharedUi } = await import('../../client/ui/shared-setup.js');
|
|
const dlg = await import('../../client/ui/dialog.js');
|
|
const { setLocale } = await import('../../client/i18n/index.js');
|
|
const { create } = await import('../../client/ui/tabs.js');
|
|
|
|
const boven = () => dom.document.querySelectorAll('.dialog-overlay').at(-1);
|
|
const escape = () => dom.key(dom.document.body, 'Escape');
|
|
|
|
describe('shared-setup: de dialogen', () => {
|
|
it('de knoppen staan in het Nederlands', async () => {
|
|
const p = dlg.confirm({ message: 'x' });
|
|
assert.equal(boven().querySelector('[data-dlg="ok"]').textContent, 'OK');
|
|
assert.equal(boven().querySelector('[data-dlg="cancel"]').textContent, 'Annuleren');
|
|
escape();
|
|
await p;
|
|
const d = dlg.detail({ title: 'x', html: '' });
|
|
assert.equal(boven().querySelector('.dialog-close').getAttribute('aria-label'), 'Sluiten');
|
|
escape();
|
|
await d;
|
|
});
|
|
|
|
it('volgt de taal: opnieuw zetten na setLocale geeft de knoppen in die taal', async () => {
|
|
setLocale('en');
|
|
try {
|
|
configureSharedUi();
|
|
const p = dlg.stepper({ steps: [{ html: () => '' }] });
|
|
assert.equal(boven().querySelector('[data-step="skip"]').textContent, 'Skip');
|
|
escape();
|
|
await p;
|
|
} finally {
|
|
setLocale('nl');
|
|
configureSharedUi();
|
|
}
|
|
});
|
|
|
|
it('een detailpaneel krijgt het oog als de bedragen vervaagd zijn; een klik haalt de vervaging weg en het oog met haar', async () => {
|
|
INSTELLING.blur = 1;
|
|
const p = dlg.detail({ title: 'Asset', html: '' });
|
|
const oog = boven().querySelector('.dialog-title .dialog-eye');
|
|
assert.ok(oog);
|
|
assert.equal(oog.getAttribute('aria-label'), 'Bedragen tonen');
|
|
dom.click(oog);
|
|
await new Promise(r => setImmediate(r));
|
|
assert.deepEqual(geschreven.at(-1), ['blur', 0]);
|
|
assert.equal(boven().querySelector('.dialog-eye'), null);
|
|
escape();
|
|
await p;
|
|
});
|
|
|
|
it('zonder vervaging geen oog, en het verschijnt als de vervaging intussen invalt', async () => {
|
|
INSTELLING.blur = 0;
|
|
const p = dlg.detail({ title: 'Asset', html: '' });
|
|
assert.equal(boven().querySelector('.dialog-eye'), null);
|
|
dom.document.dispatchEvent(new CustomEvent('blur-changed', { detail: { on: true } }));
|
|
assert.ok(boven().querySelector('.dialog-eye'));
|
|
escape();
|
|
await p;
|
|
});
|
|
});
|
|
|
|
describe('shared-setup: de tabbladen', () => {
|
|
it('een paneel dat faalt toont de foutkaart van de app, met de melding', () => {
|
|
const e = console.error;
|
|
console.error = () => {};
|
|
try {
|
|
const t = create(dom.host(), { items: [{ id: 'a', label: 'A' }], render: () => { throw new Error('kapot'); } });
|
|
assert.match(t.panel.textContent, /Er ging iets mis bij het laden van deze sectie/);
|
|
assert.match(t.panel.textContent, /kapot/);
|
|
} finally { console.error = e; }
|
|
});
|
|
});
|