diff --git a/tests/Filtre/ExtraireBalisesTest.php b/tests/Filtre/ExtraireBalisesTest.php new file mode 100644 index 0000000000000000000000000000000000000000..0687325dc2462677a93879e13af0788ebc9be717 --- /dev/null +++ b/tests/Filtre/ExtraireBalisesTest.php @@ -0,0 +1,87 @@ +<?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>' + ] + ]; + } +} diff --git a/tests/legacy/unit/filtres/data/dailymotion.rss b/tests/Fixtures/data/dailymotion.rss similarity index 100% rename from tests/legacy/unit/filtres/data/dailymotion.rss rename to tests/Fixtures/data/dailymotion.rss diff --git a/tests/legacy/unit/filtres/extraire_balise.php b/tests/legacy/unit/filtres/extraire_balise.php deleted file mode 100644 index aceacbead32c426e4bdd90aa4ce4bbfbc191cc56..0000000000000000000000000000000000000000 --- a/tests/legacy/unit/filtres/extraire_balise.php +++ /dev/null @@ -1,94 +0,0 @@ -<?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';