* @link https://www.oxidmodule.com */ namespace D3\PdfDocuments\Tests\Unit\Application\Controller; use D3\PdfDocuments\Application\Controller\orderOverviewPdfGenerator; use D3\PdfDocuments\Application\Model\Documents\invoicePdf; use D3\PdfDocuments\Application\Model\Exceptions\noPdfHandlerFoundException; use D3\PdfDocuments\Application\Model\Interfaces\pdfdocumentsOrderInterface; use D3\PdfDocuments\Application\Model\Registries\registryOrderoverview; use D3\PdfDocuments\Application\Model\Registries\registryOrderoverviewInterface; use D3\TestingTools\Development\CanAccessRestricted; use Generator; use OxidEsales\Eshop\Application\Model\Order; use PHPUnit\Framework\TestCase; use ReflectionException; class orderOverviewPdfGeneratorTest extends TestCase { use CanAccessRestricted; /** * @test * @covers \D3\PdfDocuments\Application\Controller\orderOverviewPdfGenerator::generatePdf * @throws ReflectionException */ public function testGeneratePdf(): void { $document = $this->getMockBuilder(invoicePdf::class) ->onlyMethods(['downloadPdf']) ->getMock(); $document->expects($this->once())->method('downloadPdf'); $sut = $this->getMockBuilder(orderOverviewPdfGenerator::class) ->onlyMethods(['getPdfClass']) ->getMock(); $sut->expects($this->once())->method('getPdfClass')->willReturn($document); $this->callMethod( $sut, 'generatePdf', [oxNew(Order::class)] ); } /** * @test * @covers \D3\PdfDocuments\Application\Controller\orderOverviewPdfGenerator::getPdfClass * @throws ReflectionException * @dataProvider getPdfClassDataProvider */ public function testGetPdfClass(array $generatorList, string $request, bool $expectException): void { $_GET['pdftype'] = $request; $orderOverviewRegistry = $this->getMockBuilder(registryOrderoverview::class) ->onlyMethods(['getList']) ->getMock(); $orderOverviewRegistry->method('getList')->willReturn($generatorList); $this->addServiceMocks([ registryOrderoverviewInterface::class => $orderOverviewRegistry, ]); $sut = oxNew(orderOverviewPdfGenerator::class); if ($expectException) { $this->expectException(noPdfHandlerFoundException::class); } $this->assertInstanceOf( pdfdocumentsOrderInterface::class, $this->callMethod( $sut, 'getPdfClass', ) ); } public static function getPdfClassDataProvider(): Generator { yield 'no generator set' => [[], 'foo', true]; yield 'unknown generator set' => [[new invoicePdf()], 'foo', true]; yield 'valid generator set' => [[new invoicePdf()], 'invoice', false]; } }