浏览代码

fix unit tests and lint

Olivier Massot 5 月之前
父节点
当前提交
d44f0cf47b

+ 6 - 6
config/packages/docker/messenger.yaml

@@ -1,9 +1,9 @@
 # Désactive le fonctionnement asynchrone de messenger en mode dev
 # > commenter pour tester avec un fonctionnement asynchrone
 #   (dans ce cas, la commande `messenger:consume async` doit être en cours d'exécution)
-framework:
-    messenger:
-        transports:
-            # https://symfony.com/doc/current/messenger.html#transport-configuration
-            async: 'sync://'
-            failed: 'sync://'
+#framework:
+#    messenger:
+#        transports:
+#            # https://symfony.com/doc/current/messenger.html#transport-configuration
+#            async: 'sync://'
+#            failed: 'sync://'

+ 13 - 3
src/Service/Export/Encoder/PdfEncoder.php

@@ -5,7 +5,6 @@ declare(strict_types=1);
 namespace App\Service\Export\Encoder;
 
 use App\Enum\Export\ExportFormatEnum;
-use App\Service\Utils\DebugUtils;
 use App\Service\Utils\PathUtils;
 use Dompdf\Dompdf;
 use Dompdf\Options;
@@ -20,6 +19,16 @@ class PdfEncoder implements EncoderInterface
         return $format === ExportFormatEnum::PDF->value;
     }
 
+    protected function getDomPdf(): Dompdf
+    {
+        return new Dompdf();
+    }
+
+    protected function getDomPdfOptions(): Options
+    {
+        return new Options();
+    }
+
     /**
      * Converts the provided HTML content into a PDF document.
      *
@@ -32,8 +41,8 @@ class PdfEncoder implements EncoderInterface
      */
     public function encode(string $html, array $options = []): string
     {
-        $domPdfOptions = new Options();
-        $dompdf = new Dompdf();
+        $domPdfOptions = $this->getDomPdfOptions();
+        $dompdf = $this->getDomPdf();
 
         $domPdfOptions->setIsRemoteEnabled(true);
         $domPdfOptions->setChroot(PathUtils::getProjectDir().'/public');
@@ -44,6 +53,7 @@ class PdfEncoder implements EncoderInterface
         $dompdf->setOptions($domPdfOptions);
         $dompdf->loadHtml($html);
         $dompdf->render();
+
         return $dompdf->output();
     }
 }

+ 1 - 1
src/Service/Utils/DebugUtils.php

@@ -8,7 +8,7 @@ use Path\Path;
 
 class DebugUtils
 {
-    public static function dumpToFile(mixed $var, bool $append = false): void
+    public static function dumpToFile(mixed $var, bool $append = true): void
     {
         $debugFile = (new Path(PathUtils::getProjectDir()))->append('var', 'dump.log');
 

+ 41 - 14
tests/Unit/Service/Export/Encoder/PdfEncoderTest.php

@@ -10,47 +10,74 @@ use PHPUnit\Framework\TestCase;
 
 class TestablePdfEncoder extends PdfEncoder
 {
-    public function setDomPdfOptions(Options $options): void
+    public function getDomPdf(): Dompdf
     {
-        $this->domPdfOptions = $options;
+        return parent::getDomPdf();
     }
 
-    public function setDomPdf(Dompdf $dompdf): void
+    public function getDomPdfOptions(): Options
     {
-        $this->dompdf = $dompdf;
+        return parent::getDomPdfOptions();
     }
 }
 
 class PdfEncoderTest extends TestCase
 {
+    private function getPdfEncoderMockFor(string $method): TestablePdfEncoder
+    {
+        return $this->getMockBuilder(TestablePdfEncoder::class)
+            ->disableOriginalConstructor()
+            ->setMethodsExcept([$method])
+            ->getMock();
+    }
+
     /**
      * @see PdfEncoder::support()
      */
     public function testSupport(): void
     {
-        $encoder = $this->getMockBuilder(PdfEncoder::class)
-            ->disableOriginalConstructor()
-            ->setMethodsExcept(['support'])
-            ->getMock();
+        $encoder = $this->getPdfEncoderMockFor('support');
 
         $this->assertTrue($encoder->support('pdf'));
         $this->assertFalse($encoder->support('txt'));
     }
 
+    /**
+     * @see PdfEncoder::getDomPdf()
+     */
+    public function testGetDomPdf(): void
+    {
+        $encoder = $this->getPdfEncoderMockFor('getDomPdf');
+
+        $dompdf = $encoder->getDomPdf();
+
+        $this->assertInstanceOf(Dompdf::class, $dompdf);
+    }
+
+    /**
+     * @see PdfEncoder::getDomPdfOptions()
+     */
+    public function testGetDomPdfOptions(): void
+    {
+        $encoder = $this->getPdfEncoderMockFor('getDomPdfOptions');
+
+        $options = $encoder->getDomPdfOptions();
+
+        $this->assertInstanceOf(Options::class, $options);
+    }
+
     /**
      * @see PdfEncoder::encode()
      */
     public function testEncode(): void
     {
-        $encoder = $this->getMockBuilder(TestablePdfEncoder::class)
-            ->disableOriginalConstructor()
-            ->setMethodsExcept(['encode', 'setDomPdfOptions', 'setDomPdf'])
-            ->getMock();
+        $encoder = $this->getPdfEncoderMockFor('encode');
 
         $domPdfOptions = $this->getMockBuilder(Options::class)->disableOriginalConstructor()->getMock();
         $domPdf = $this->getMockBuilder(Dompdf::class)->disableOriginalConstructor()->getMock();
-        $encoder->setDomPdfOptions($domPdfOptions);
-        $encoder->setDomPdf($domPdf);
+
+        $encoder->expects(self::once())->method('getDomPdfOptions')->willReturn($domPdfOptions);
+        $encoder->expects(self::once())->method('getDomPdf')->willReturn($domPdf);
 
         $domPdfOptions->expects(self::once())->method('setIsRemoteEnabled')->with(true);
         $domPdfOptions->expects(self::once())->method('setChroot')->with(PathUtils::getProjectDir().'/public');