Files
AtreidesAssetsFree/tests/ui/attention-dot.test.mjs
T
2026-10-29 11:57:29 +01:00

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"/);
});
});