Skip to content
Extraits de code Groupes Projets
Valider a253dd53 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

refactor: convertir le vieux test sur extraire_balises

parent 0f3e181e
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
<?php
declare(strict_types=1);
/**
* Test unitaire de la fonction extraire_multi du fichier ./inc/filtres.php
*/
namespace Spip\Core\Tests\Filtre;
use PHPUnit\Framework\TestCase;
class ExtraireBalisesTest extends TestCase
{
public static function setUpBeforeClass(): void
{
find_in_path('./inc/filtres.php', '', true);
find_in_path('./inc/lang.php', '', true);
}
public function testFiltresExtraireBalisesMediaRss(): void
{
$rss = file_get_contents(dirname(__DIR__) . '/Fixtures/data/dailymotion.rss');
if (empty($rss)) {
$this->markTestSkipped();
}
$balises_media = extraire_balises($rss, 'media:content');
$this->assertIsArray($balises_media);
$this->assertEquals(count($balises_media), 40);
}
/**
* @dataProvider providerFiltresExtraireBalises
*/
public function testFiltresExtraireBalises($expected, ...$args): void
{
$actual = extraire_balises(...$args);
$this->assertSame($expected, $actual);
$this->assertEquals($expected, $actual);
}
public function providerFiltresExtraireBalises(): array
{
return [
[
['<a href="truc">chose</a>'],
'allo <a href="truc">chose</a>'
],
[
['<a href="truc" />'],
'allo <a href="truc" />'
],
[
["<a\nhref='truc' />"],
'allo' . "\n" . " <a\nhref='truc' />"
],
[
[['<a href="1">'], ['<a href="2">']],
['allo <a href="1">', 'allo <a href="2">']
],
[
['<a href="truc">chose</a>'],
'bonjour <a href="truc">chose</a> machin'
],
[
['<a href="truc">chose</a>', '<A href="truc">machin</a>'],
'bonjour <a href="truc">chose</a> machin <A href="truc">machin</a>',
],
[
['<a href="truc">'],
'bonjour <a href="truc">chose'
],
[
['<a href="truc"/>'],
'<a href="truc"/>chose</a>'
],
[
['<a>chose</a>'],
'<a>chose</a>'
]
];
}
}
<?php
declare(strict_types=1);
$test = 'extraire_balise';
$remonte = __DIR__ . '/';
while (! is_file($remonte . 'test.inc')) {
$remonte .= '../';
}
require $remonte . 'test.inc';
include_spip('inc/filtres');
// extraire une balise ouvrante
$essais[] = ['<a href="truc">chose</a>', 'allo <a href="truc">chose</a>'];
// extraire une balise autofermante
$essais[] = ['<a href="truc" />', 'allo <a href="truc" />'];
// peu importent les \n
$essais[] = ["<a\nhref='truc' />", 'allo' . "\n" . " <a\nhref='truc' />"];
// extraire plusieurs balises (array => array)
$essais[] = [['<a href="1">', '<a href="2">'], ['allo <a href="1">', 'allo <a href="2">']];
$err = tester_fun('extraire_balise', $essais);
// si le tableau $err est pas vide ca va pas
if ($err) {
die('<dl>' . implode('', $err) . '</dl>');
}
$essais = [];
// un tag
$essais[] = [['<a href="truc">chose</a>'], 'bonjour <a href="truc">chose</a> machin'];
// deux tags
$essais[] = [
['<a href="truc">chose</a>', '<A href="truc">machin</a>'],
'bonjour <a href="truc">chose</a> machin <A href="truc">machin</a>',
];
// tag mal forme
$essais[] = [['<a href="truc">'], 'bonjour <a href="truc">chose'];
// piege
$essais[] = [['<a href="truc"/>'], '<a href="truc"/>chose</a>'];
// sans attributs
$essais[] = [['<a>chose</a>'], '<a>chose</a>'];
$err = tester_fun('extraire_balises', $essais);
// si le tableau $err est pas vide ca va pas
if ($err) {
die('<dl>' . implode('', $err) . '</dl>');
}
// un exemple d'utilisation sympa du mode "array" de ces fonctions:
// aller chercher toutes les images d'un texte (img/src) ou encore
// tous les url des balises media:content :
lire_fichier($f = __DIR__ . '/data/dailymotion.rss', $rss);
$flux = extraire_attribut(extraire_balises($rss, 'media:content'), 'url');
# var_dump($flux);
if (! is_array($flux) || ($flux === []) === 39) {
echo "pas vu les 39 media:content de dailymotion.rss ! (dans {$f})\n";
}
// en objet on ecrirait
// $rss->extraire_balises('media:content')->extraire_attribut('url');
echo 'OK';
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter