Files
Vivier/tests/test_aide.php
T

40 lines
2.3 KiB
PHP

<?php
// Tests de l'aide intégrée : php tests/test_aide.php
declare(strict_types=1);
const VIVIER_RACINE = __DIR__ . '/..';
const SENIORITES = ['junior' => 'Junior'];
const STATUTS = ['recu' => 'Reçu'];
require __DIR__ . '/../src/i18n.php';
require __DIR__ . '/../src/Recherche.php';
require __DIR__ . '/../src/markdown.php';
require __DIR__ . '/../src/aide.php';
$ok = 0; $ko = 0;
function verifier(string $nom, bool $cond): void {
global $ok, $ko;
if ($cond) { $ok++; } else { $ko++; echo "ECHEC : $nom\n"; }
}
foreach (array_keys(DOCUMENTS_AIDE) as $guide) {
$fr = aide($guide, 'fr');
$en = aide($guide, 'en');
verifier("$guide : existe en français et en anglais", $fr !== null && $en !== null && $fr['langue'] === 'fr' && $en['langue'] === 'en');
verifier("$guide : même nombre de chapitres dans les deux langues", count($fr['chapitres']) === count($en['chapitres']) && count($fr['chapitres']) >= 10);
foreach (['fr' => $fr, 'en' => $en] as $langue => $a) {
preg_match_all('/ id="([^"]+)"/', $a['html'], $ids);
verifier("$guide ($langue) : ancres uniques et non vides", count($ids[1]) === count(array_unique($ids[1])) && !in_array('', $ids[1], true));
verifier("$guide ($langue) : chaque chapitre du sommaire a son ancre", !array_diff(array_column($a['chapitres'], 'id'), $ids[1]));
verifier("$guide ($langue) : aucun balisage Markdown resté visible", !preg_match('/\*\*|^#|\|\s*---/m', strip_tags($a['html'])));
}
// Même structure : autant de sous-titres, de tableaux et de listes numérotées de part et d'autre
foreach (['<h3' => 'sous-titres', '<table>' => 'tableaux', '<ol>' => 'listes numérotées', '<tr>' => 'lignes de tableau'] as $balise => $nom) {
verifier("$guide : autant de $nom en français qu'en anglais", substr_count($fr['html'], $balise) === substr_count($en['html'], $balise));
}
}
verifier('langue sans fichier : le français est servi', aide('guide', 'de')['langue'] === 'fr');
verifier('guide inconnu ou nom piégé : rien', aide('autre', 'fr') === null && aide('../config/config', 'fr') === null && aide('guide', '../x') === null);
verifier('ancre lisible, sans accent', aide('guide', 'fr')['chapitres'][1]['id'] === 'se-connecter');
echo "$ok réussis, $ko échoués\n";
exit($ko > 0 ? 1 : 0);