fix: markdown double-encoding and robust date/API access

This commit is contained in:
2026-07-27 01:55:21 +04:00
parent d9da213341
commit d81dd71a46
3 changed files with 156 additions and 36 deletions
+67
View File
@@ -56,6 +56,21 @@ assertEquals(
'formatDate affiche les années au pluriel'
);
// --- formatDate : dates malformées (repli sur la chaîne brute) ---------------
assertEquals(
'pas une date',
formatDate('pas une date'),
'formatDate retourne la chaîne brute si la date est invalide'
);
assertEquals(
'2024-13-45T99:99:99Z',
formatDate('2024-13-45T99:99:99Z'),
'formatDate retourne une date ISO malformée telle quelle'
);
assertEquals('', formatDate(''), 'formatDate retourne une chaîne vide telle quelle');
assertEquals(' ', formatDate(' '), 'formatDate retourne une chaîne blanche telle quelle');
// --- formatVideosData -------------------------------------------------------
$rawVideos = [
@@ -125,6 +140,58 @@ assertEquals('', $videos[1]['description'], 'formatVideosData met une descriptio
assertEquals([], $videos[1]['tags'], 'formatVideosData met des tags vides par défaut');
assertFalse($videos[1]['isLive'], 'formatVideosData met isLive à false par défaut');
// --- formatVideosData : données API incomplètes -------------------------------
$incompleteVideos = formatVideosData([
[
// Sans uuid : doit être ignorée
'name' => 'Sans uuid',
'duration' => 10,
],
[
// uuid vide : doit être ignorée aussi
'uuid' => '',
'name' => 'Uuid vide',
],
[
// uuid seul : valeurs par défaut partout ailleurs
'uuid' => 'ghi-789',
],
[
// channel présent mais sans displayName ni avatars
'uuid' => 'jkl-012',
'channel' => ['name' => 'compte'],
],
]);
assertEquals(2, count($incompleteVideos), 'formatVideosData ignore les entrées sans uuid');
assertEquals('ghi-789', $incompleteVideos[0]['id'], 'formatVideosData conserve l\'uuid seul');
assertEquals('', $incompleteVideos[0]['title'], 'formatVideosData met un titre vide par défaut');
assertEquals(0, $incompleteVideos[0]['duration'], 'formatVideosData met une durée à 0 par défaut');
assertEquals('', $incompleteVideos[0]['channel'], 'formatVideosData met une chaîne vide par défaut');
assertEquals(0, $incompleteVideos[0]['views'], 'formatVideosData met les vues à 0 par défaut');
assertEquals('', $incompleteVideos[0]['date'], 'formatVideosData met une date vide par défaut');
assertNull($incompleteVideos[0]['aspectRatio'], 'formatVideosData met aspectRatio à null par défaut');
assertFalse($incompleteVideos[0]['isLive'], 'formatVideosData met isLive à false par défaut');
assertEquals(
'img/default-thumbnail.jpg',
$incompleteVideos[0]['thumbnail'],
'formatVideosData met la vignette par défaut pour une entrée minimale'
);
assertEquals(
'img/default-avatar.png',
$incompleteVideos[0]['channelAvatar'],
'formatVideosData met l\'avatar par défaut pour une entrée minimale'
);
assertEquals('', $incompleteVideos[1]['channel'], 'formatVideosData met une chaîne vide si displayName absent');
assertEquals(
'img/default-avatar.png',
$incompleteVideos[1]['channelAvatar'],
'formatVideosData met l\'avatar par défaut si le tableau avatars est absent'
);
// --- truncateText (includes/structured-data.php) ----------------------------
assertEquals('court', truncateText('court', 200), 'truncateText laisse un texte court intact');