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('
content
'); $domPdf->expects(self::once())->method('render'); $domPdf->expects(self::once())->method('output')->willReturn('%%encoded%%'); $this->assertEquals( '%%encoded%%', $encoder->encode('
content
', ['additionalOption' => 2]) ); } }