| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <?php
- namespace App\Tests\Unit\Service\Export\Encoder;
- use App\Service\Export\Encoder\PdfEncoder;
- use App\Service\Utils\PathUtils;
- use Dompdf\Dompdf;
- use Dompdf\Options;
- use PHPUnit\Framework\TestCase;
- class TestablePdfEncoder extends PdfEncoder
- {
- public function getDomPdf(): Dompdf
- {
- return parent::getDomPdf();
- }
- public function getDomPdfOptions(): Options
- {
- 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->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->getPdfEncoderMockFor('encode');
- $domPdfOptions = $this->getMockBuilder(Options::class)->disableOriginalConstructor()->getMock();
- $domPdf = $this->getMockBuilder(Dompdf::class)->disableOriginalConstructor()->getMock();
- $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');
- $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]);
- $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%%',
- $encoder->encode('<div>content</div>', ['additionalOption' => 2])
- );
- }
- }
|