gestion_table_tournante_libre/src/interface/libelles.test.js

51 lines
2.1 KiB
JavaScript
Raw Normal View History

// © 2026 TechnoLibre (http://www.technolibre.ca)
// License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
// Chaque mode que pose un script npm (« --mode … » dans package.json) a son
// libellé de provenance, comme le mode test que pose Vitest ; un mode sans
// libellé s'affiche sous son propre nom plutôt que de laisser le bandeau muet
// sur la provenance.
import assert from 'node:assert/strict';
import { readFileSync } from 'node:fs';
import { describe, test } from '../../test/lanceur.js';
import { aUnLibelle, libelleProvenance, titreAvecVersion } from './libelles.js';
// Modes nommés par les scripts de package.json, triés, sans doublon.
function modesDesScripts() {
const paquet = JSON.parse(
readFileSync(new URL('../../package.json', import.meta.url), 'utf8'),
);
const modes = new Set();
for (const commande of Object.values(paquet.scripts)) {
for (const [, mode] of commande.matchAll(/--mode[= ](\S+)/g)) {
modes.add(mode);
}
}
return [...modes].sort();
}
describe('libellés', () => {
test('libelleProvenance nomme les quatre modes de construction', () => {
assert.equal(libelleProvenance('developpement'), 'développement');
assert.equal(libelleProvenance('livraison'), 'livraison');
assert.equal(libelleProvenance('documentation'), 'documentation');
assert.equal(libelleProvenance('test'), 'épreuve');
});
test('chaque mode que pose un script npm a un libellé de provenance', () => {
const modes = modesDesScripts();
assert.ok(modes.length > 0, 'aucun « --mode » dans les scripts de package.json');
assert.deepEqual(modes.filter((mode) => !aUnLibelle(mode)), []);
});
test('libelleProvenance rend un mode sans libellé sous son propre nom', () => {
assert.equal(libelleProvenance('production'), 'production');
assert.equal(libelleProvenance('constructor'), 'constructor');
assert.equal(aUnLibelle('constructor'), false);
});
test('titreAvecVersion joint le nom et la version par un tiret cadratin', () => {
assert.equal(titreAvecVersion('X'), 'Gestion table tournante Libre — X');
});
});