fix: ISO countdown date, IntlDateFormatter and UTF-8 truncation

This commit is contained in:
2026-07-27 09:15:10 +04:00
parent cb13fcfb9f
commit ddd82fdff6
5 changed files with 233 additions and 28 deletions
+37 -1
View File
@@ -1,6 +1,6 @@
<?php
/**
* Tests unitaires pour les fonctions de formatage de includes/config.php
* Tests unitaires pour les fonctions de formatage de includes/lib/format.php
* (formatDuration, formatViewCount, formatDate, formatVideosData)
* et truncateText de includes/structured-data.php
*/
@@ -210,3 +210,39 @@ assertEquals(
truncateText($textNoSpace, 200),
'truncateText coupe à la limite quand il n\'y a pas d\'espace'
);
// --- truncateText : UTF-8 multioctet (mb_substr) -----------------------------
$utf8WithSpace = str_repeat('é', 150) . ' ' . str_repeat('b', 100); // 251 caractères
assertEquals(
str_repeat('é', 150) . '...',
truncateText($utf8WithSpace, 200),
'truncateText compte les caractères UTF-8 et non les octets'
);
$utf8NoSpace = str_repeat('€', 250); // 3 octets par caractère
$truncatedUtf8 = truncateText($utf8NoSpace, 200);
assertEquals(
str_repeat('€', 200) . '...',
$truncatedUtf8,
'truncateText ne coupe pas un caractère multioctet en deux'
);
assertEquals(1, preg_match('//u', $truncatedUtf8), 'truncateText retourne de l\'UTF-8 valide');
// --- formatDateFr (includes/structured-data.php) -----------------------------
$dateFr = new DateTime('2025-10-11 00:00:00', new DateTimeZone('Indian/Reunion'));
assertEquals('11 octobre 2025', formatDateFr($dateFr), 'formatDateFr formate la date longue en français');
assertEquals(
'11 octobre 2025 à 00:00',
formatDateFr($dateFr, true),
'formatDateFr ajoute l\'heure quand demandé'
);
$dateFrSummer = new DateTime('2026-07-04 12:30:00', new DateTimeZone('UTC'));
assertEquals('4 juillet 2026', formatDateFr($dateFrSummer), 'formatDateFr sans zéro initial sur le jour');
assertEquals(
'4 juillet 2026 à 12:30',
formatDateFr($dateFrSummer, true),
'formatDateFr utilise le fuseau de la date fournie'
);