67 lines
2.6 KiB
JavaScript
67 lines
2.6 KiB
JavaScript
// Generated, do not edit. sha256:3aaa6e524933ad9658661ecb7b45494d44629620bf29811a6f9255c236d13e47
|
|
import { describe, it } from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
|
|
const { attentionDotHtml, attentionHasProblem, attentionDimmed } =
|
|
await import('../../client/ui/attention.js');
|
|
|
|
const item = (extra = {}) => ({ id: 'x', severity: 'attention', label: 'iets', fade: 'full', ...extra });
|
|
|
|
describe('de kleur van het bolletje', () => {
|
|
it('is accent bij een indicatie', () => {
|
|
const html = attentionDotHtml([item()]);
|
|
assert.match(html, /class="nav-attention"/, 'geen extra klasse betekent de basis, en die is accent');
|
|
});
|
|
|
|
it('is rood zodra er iets stuk is', () => {
|
|
assert.match(attentionDotHtml([item({ severity: 'problem' })]), /is-problem/);
|
|
});
|
|
|
|
it('laat één probleem de hele dot kleuren, ook naast indicaties', () => {
|
|
const html = attentionDotHtml([item(), item({ id: 'y', severity: 'problem' }), item({ id: 'z' })]);
|
|
assert.match(html, /is-problem/);
|
|
});
|
|
|
|
it('behandelt een ontbrekende ernst als indicatie en niet als probleem', () => {
|
|
assert.doesNotMatch(attentionDotHtml([{ id: 'x', label: 'iets', fade: 'full' }]), /is-problem/);
|
|
});
|
|
});
|
|
|
|
describe('de vervaging', () => {
|
|
it('dimt pas als er niets meer vol is', () => {
|
|
assert.match(attentionDotHtml([item({ fade: 'dim' })]), /is-dim/);
|
|
assert.doesNotMatch(attentionDotHtml([item({ fade: 'dim' }), item({ id: 'y' })]), /is-dim/,
|
|
'één vol item houdt de dot vol');
|
|
});
|
|
});
|
|
|
|
describe('de gedeelde regel, los van het element', () => {
|
|
it('noemt een leeg of ontbrekend stel niet vervaagd en niet stuk', () => {
|
|
for (const leeg of [[], null, undefined]) {
|
|
assert.equal(attentionHasProblem(leeg), false);
|
|
assert.equal(attentionDimmed(leeg), false, 'niets is niet hetzelfde als vervaagd');
|
|
}
|
|
});
|
|
|
|
it('kleurt op de zwaarste en dimt op de zwakste', () => {
|
|
const vol = item();
|
|
const vaag = item({ id: 'y', fade: 'dim' });
|
|
const stuk = item({ id: 'z', severity: 'problem' });
|
|
assert.equal(attentionHasProblem([vol, stuk]), true, 'één probleem is genoeg');
|
|
assert.equal(attentionDimmed([vol, vaag]), false, 'één vol item houdt het geheel vol');
|
|
assert.equal(attentionDimmed([vaag]), true);
|
|
});
|
|
});
|
|
|
|
describe('de rand van het geval', () => {
|
|
it('tekent niets zonder items', () => {
|
|
assert.equal(attentionDotHtml([]), '');
|
|
assert.equal(attentionDotHtml(null), '');
|
|
});
|
|
|
|
it('zet de labels als hint, en escapet ze', () => {
|
|
const html = attentionDotHtml([item({ label: 'een "raar" label' })]);
|
|
assert.match(html, /title="een "raar" label"/);
|
|
});
|
|
});
|