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