From b796063a9fbbc362492dd452f0264c0342b7e235 Mon Sep 17 00:00:00 2001 From: bricebou <bricebou@momh.fr> Date: Sun, 16 Mar 2025 14:03:51 +0100 Subject: [PATCH] =?UTF-8?q?test:=20d=C3=A9but=20des=20tests=20pour=20le=20?= =?UTF-8?q?Handler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/HandlerTest.php | 69 +++++++++++++++++++++++++++++++------ tests/data/conversion.docx | Bin 0 -> 25570 bytes 2 files changed, 58 insertions(+), 11 deletions(-) create mode 100644 tests/data/conversion.docx diff --git a/tests/HandlerTest.php b/tests/HandlerTest.php index df27cda..6043c06 100644 --- a/tests/HandlerTest.php +++ b/tests/HandlerTest.php @@ -3,33 +3,80 @@ use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use SpipContrib\Odt2Spip\Handler; +use Symfony\Component\Filesystem\Filesystem; class HandlerTest extends TestCase { - #[DataProvider('identifyImagesDataProvider')] - public function testIidentifyImages(array $expected, array $args): void { + private string $odt = _DIR_PLUGIN_ODT2SPIP . 'tests/data/handler/unzip.odt'; + + private string $docx = _DIR_PLUGIN_ODT2SPIP . 'tests/data/handler/conversion.docx'; + + public function testPrepareFile(): void { + // Créer un faux fichier et l'ajouter au tableau $_FILES + $fs = new Filesystem(); + $fs->copy(_DIR_PLUGIN_ODT2SPIP . 'tests/data/unzip.odt', $this->odt); + + // Cf. https://discourse.cakephp.org/t/unit-testing-of-file-uploads-solved/5241 + $_FILES = [ + 'odt' => [ + 'error' => UPLOAD_ERR_OK, + 'name' => 'unzip.odt', + 'size' => filesize($this->odt), + 'tmp_name' => $this->odt, + 'type' => 'application/vnd.oasis.opendocument.text', + ] + ]; + + $handler = new Handler('odt', 'article', 2); + + $this->assertNull($handler->prepareFile()); + } + + public function testPrepareFileWithConversion(): void { + // Créer un faux fichier et l'ajouter au tableau $_FILES + $fs = new Filesystem(); + $fs->copy(_DIR_PLUGIN_ODT2SPIP . 'tests/data/conversion.docx', $this->docx); + + // Cf. https://discourse.cakephp.org/t/unit-testing-of-file-uploads-solved/5241 + $_FILES = [ + 'docx' => [ + 'error' => UPLOAD_ERR_OK, + 'name' => 'conversion.docx', + 'size' => filesize($this->docx), + 'tmp_name' => $this->docx, + 'type' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + ] + ]; + + $handler = new Handler('docx', 'article', 2); + + $this->assertNull($handler->prepareFile()); + } + + #[DataProvider('getImagesDataProvider')] + public function testGetImages(array $expected, array $args): void { $handler = new Handler('fichier', 'article', 2); $reflection = new ReflectionClass($handler); $reflection->getProperty('workingDir')->setValue($handler, __DIR__ . '/data/handler/'); $method = $reflection->getMethod('getImages'); $result = $method->invoke($handler, ...$args); - + $this->assertSame($expected, $result); } #[DataProvider('updateImagesDataProvider')] - public function testupdateImages(string $expected, array $args): void { + public function testUpdateImages(string $expected, array $args): void { $handler = new Handler('fichier', 'article', 2); $reflection = new ReflectionClass($handler); $method = $reflection->getMethod('updateImages'); - + $result = $method->invoke($handler, ...$args); - + $this->assertSame($expected, $result); } - - public static function identifyImagesDataProvider(): array { + + public static function getImagesDataProvider(): array { return [ 'no image' => [ ["Here comes {{bold}} text\n\n", null], @@ -121,7 +168,7 @@ class HandlerTest extends TestCase ], ]; } - + public static function updateImagesDataProvider(): array { return [ 'id' => [ @@ -192,5 +239,5 @@ class HandlerTest extends TestCase ] ] ]; - } -} \ No newline at end of file + } +} diff --git a/tests/data/conversion.docx b/tests/data/conversion.docx new file mode 100644 index 0000000000000000000000000000000000000000..2ed4d34907ba7ff498a7ace2976f50c4a05dc047 GIT binary patch literal 25570 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 R(mx5#4I;0!y9UR5{{d{$!ma=S literal 0 HcmV?d00001 -- GitLab