|
|
@@ -3,26 +3,32 @@
|
|
|
namespace App\Tests\Unit\Service\Export\Encoder;
|
|
|
|
|
|
use App\Service\Export\Encoder\PdfEncoder;
|
|
|
+use App\Service\Utils\Path;
|
|
|
+use Dompdf\Dompdf;
|
|
|
+use Dompdf\Options;
|
|
|
use Knp\Snappy\Pdf;
|
|
|
use PHPUnit\Framework\MockObject\MockObject;
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
|
|
-class PdfEncoderTest extends TestCase
|
|
|
-{
|
|
|
- private MockObject|Pdf $knpSnappy;
|
|
|
+class TestablePdfEncoder extends PdfEncoder {
|
|
|
+ public function setDomPdfOptions(Options $options): void {
|
|
|
+ $this->domPdfOptions = $options;
|
|
|
+ }
|
|
|
|
|
|
- public function setUp(): void
|
|
|
- {
|
|
|
- $this->knpSnappy = $this->getMockBuilder(Pdf::class)->getMock();
|
|
|
+ public function setDomPdf(Dompdf $dompdf): void {
|
|
|
+ $this->dompdf = $dompdf;
|
|
|
}
|
|
|
+}
|
|
|
|
|
|
+class PdfEncoderTest extends TestCase
|
|
|
+{
|
|
|
/**
|
|
|
* @see PdfEncoder::support()
|
|
|
*/
|
|
|
public function testSupport(): void
|
|
|
{
|
|
|
$encoder = $this->getMockBuilder(PdfEncoder::class)
|
|
|
- ->setConstructorArgs([$this->knpSnappy])
|
|
|
+ ->disableOriginalConstructor()
|
|
|
->setMethodsExcept(['support'])
|
|
|
->getMock();
|
|
|
|
|
|
@@ -30,36 +36,31 @@ class PdfEncoderTest extends TestCase
|
|
|
$this->assertFalse($encoder->support('txt'));
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * @see PdfEncoder::getDefaultOptions()
|
|
|
- */
|
|
|
- public function testGetDefaultOptions(): void
|
|
|
- {
|
|
|
- $encoder = $this->getMockBuilder(PdfEncoder::class)
|
|
|
- ->setConstructorArgs([$this->knpSnappy])
|
|
|
- ->setMethodsExcept(['getDefaultOptions'])
|
|
|
- ->getMock();
|
|
|
-
|
|
|
- $this->assertIsArray($encoder->getDefaultOptions());
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* @see PdfEncoder::encode()
|
|
|
*/
|
|
|
public function testEncode(): void
|
|
|
{
|
|
|
- $encoder = $this->getMockBuilder(PdfEncoder::class)
|
|
|
- ->setConstructorArgs([$this->knpSnappy])
|
|
|
- ->setMethodsExcept(['encode'])
|
|
|
+ $encoder = $this->getMockBuilder(TestablePdfEncoder::class)
|
|
|
+ ->disableOriginalConstructor()
|
|
|
+ ->setMethodsExcept(['encode', 'setDomPdfOptions', 'setDomPdf'])
|
|
|
->getMock();
|
|
|
|
|
|
- $encoder->method('getDefaultOptions')->willReturn(['defaultOption' => 1]);
|
|
|
+ $domPdfOptions = $this->getMockBuilder(Options::class)->disableOriginalConstructor()->getMock();
|
|
|
+ $domPdf = $this->getMockBuilder(Dompdf::class)->disableOriginalConstructor()->getMock();
|
|
|
+ $encoder->setDomPdfOptions($domPdfOptions);
|
|
|
+ $encoder->setDomPdf($domPdf);
|
|
|
+
|
|
|
+ $domPdfOptions->expects(self::once())->method('setIsRemoteEnabled')->with(true);
|
|
|
+ $domPdfOptions->expects(self::once())->method('setChroot')->with(Path::getProjectDir() . '/public');
|
|
|
+ $domPdfOptions->expects(self::once())->method('setDefaultPaperOrientation')->with('portrait');
|
|
|
+ $domPdfOptions->expects(self::once())->method('setDefaultPaperSize')->with('A4');
|
|
|
+ $domPdfOptions->expects(self::once())->method('set')->with(['additionalOption' => 2]);
|
|
|
|
|
|
- $this->knpSnappy
|
|
|
- ->expects(self::once())
|
|
|
- ->method('getOutputFromHtml')
|
|
|
- ->with('<div>content</div>', ['defaultOption' => 1, 'additionalOption' => 2])
|
|
|
- ->willReturn('%%encoded%%');
|
|
|
+ $domPdf->expects(self::once())->method('setOptions')->with($domPdfOptions);
|
|
|
+ $domPdf->expects(self::once())->method('loadHtml')->with('<div>content</div>');
|
|
|
+ $domPdf->expects(self::once())->method('render');
|
|
|
+ $domPdf->expects(self::once())->method('output')->willReturn('%%encoded%%');
|
|
|
|
|
|
$this->assertEquals(
|
|
|
'%%encoded%%',
|