36 lines
1.6 KiB
JavaScript
36 lines
1.6 KiB
JavaScript
// Generated, do not edit. sha256:15dbf19377a08dba5f9a565fd3575f87341d62828d1e85351115ec01a421c123
|
|||
|
|
import { describe, it, mock } from 'node:test';
|
||
|
|
import assert from 'node:assert/strict';
|
||
|
|
|
||
|
|
let dicht = new Set();
|
||
|
|
mock.module('../../client/license.js', { namedExports: { locked: f => dicht.has(f) } });
|
||
|
|
const { registerWidget, availableWidgets } = await import('../../client/widgets/registry.js');
|
||
|
|
|
||
|
|
const klok = () => {};
|
||
|
|
const klokInstelling = () => {};
|
||
|
|
const signaal = () => {};
|
||
|
|
const signaalInstelling = () => {};
|
||
|
|
registerWidget('clocks', { render: klok, settings: klokInstelling });
|
||
|
|
registerWidget('signal', { render: signaal, settings: signaalInstelling, feature: 'signals' });
|
||
|
|
|
||
|
|
describe('availableWidgets', () => {
|
||
|
|
it('volledig: elke widget met zijn instellingen', () => {
|
||
|
|
dicht = new Set();
|
||
|
|
const { renderers, settings } = availableWidgets();
|
||
|
|
assert.deepEqual(Object.keys(renderers).sort(), ['clocks', 'signal']);
|
||
|
|
assert.equal(settings.signal, signaalInstelling);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('gratis: een betaalde widget verdwijnt, ook zijn instellingen', () => {
|
||
|
|
dicht = new Set(['signals']);
|
||
|
|
const { renderers, settings } = availableWidgets();
|
||
|
|
assert.deepEqual(Object.keys(renderers), ['clocks']);
|
||
|
|
assert.equal(settings.signal, undefined);
|
||
|
|
assert.equal(settings.clocks, klokInstelling, 'een widget zonder vlag blijft staan');
|
||
|
|
});
|
||
|
|
|
||
|
|
it('weigert een onbekend type en een tweede registratie', () => {
|
||
|
|
assert.throws(() => registerWidget('bestaat-niet', { render: klok }), /Unknown widget type/);
|
||
|
|
assert.throws(() => registerWidget('clocks', { render: klok }), /registered twice/);
|
||
|
|
});
|
||
|
|
});
|