Configurable PDF exports (#5641)
This commit is contained in:
@@ -10,17 +10,18 @@
|
||||
namespace App\Tests\Export\Base;
|
||||
|
||||
use App\Export\Base\PDFRenderer;
|
||||
use App\Export\Base\RendererTrait;
|
||||
use App\Pdf\HtmlToPdfConverter;
|
||||
use App\Pdf\PdfRendererTrait;
|
||||
use App\Project\ProjectStatisticService;
|
||||
use App\Tests\Export\Renderer\AbstractRendererTestCase;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\Group;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Twig\Environment;
|
||||
|
||||
/**
|
||||
* @covers \App\Export\Base\RendererTrait
|
||||
* @covers \App\Pdf\PdfRendererTrait
|
||||
*/
|
||||
#[CoversClass(RendererTrait::class)]
|
||||
#[CoversClass(PdfRendererTrait::class)]
|
||||
#[CoversClass(PDFRenderer::class)]
|
||||
#[Group('integration')]
|
||||
class PdfRendererTest extends AbstractRendererTestCase
|
||||
@@ -31,22 +32,22 @@ class PdfRendererTest extends AbstractRendererTestCase
|
||||
$converter = $this->createMock(HtmlToPdfConverter::class);
|
||||
$projectStatisticService = $this->createMock(ProjectStatisticService::class);
|
||||
|
||||
return new PDFRenderer($twig, $converter, $projectStatisticService);
|
||||
return new PDFRenderer(
|
||||
$twig,
|
||||
$converter,
|
||||
$projectStatisticService,
|
||||
'foo',
|
||||
'bar',
|
||||
'export/print.html.twig'
|
||||
);
|
||||
}
|
||||
|
||||
public function testConfiguration(): void
|
||||
{
|
||||
$sut = $this->getAbstractRenderer();
|
||||
|
||||
self::assertEquals('pdf', $sut->getId());
|
||||
self::assertEquals('pdf', $sut->getTitle());
|
||||
|
||||
$sut->setTitle('foo-bar');
|
||||
self::assertEquals('foo-bar', $sut->getTitle());
|
||||
|
||||
$sut->setId('bar-id');
|
||||
self::assertEquals('bar-id', $sut->getId());
|
||||
|
||||
self::assertEquals('foo', $sut->getId());
|
||||
self::assertEquals('bar', $sut->getTitle());
|
||||
self::assertEquals([], $sut->getPdfOptions());
|
||||
$sut->setPdfOption('foo', 'bar');
|
||||
self::assertEquals(['foo' => 'bar'], $sut->getPdfOptions());
|
||||
@@ -54,5 +55,33 @@ class PdfRendererTest extends AbstractRendererTestCase
|
||||
self::assertEquals(['foo' => 'bar2'], $sut->getPdfOptions());
|
||||
$sut->setPdfOption('hello', 'world');
|
||||
self::assertEquals(['foo' => 'bar2', 'hello' => 'world'], $sut->getPdfOptions());
|
||||
self::assertFalse($sut->isInternal());
|
||||
}
|
||||
|
||||
/**
|
||||
* @group legacy
|
||||
*/
|
||||
public function testLegacy(): void
|
||||
{
|
||||
$sut = $this->getAbstractRenderer();
|
||||
|
||||
$sut->setTemplate('some'); // @phpstan-ignore method.deprecated
|
||||
$sut->setTitle('xxxxxx'); // @phpstan-ignore method.deprecated
|
||||
self::assertEquals('xxxxxx', $sut->getTitle());
|
||||
}
|
||||
|
||||
public function testRender(): void
|
||||
{
|
||||
$sut = $this->getAbstractRenderer();
|
||||
|
||||
$response = $this->render($sut);
|
||||
self::assertInstanceOf(Response::class, $response);
|
||||
|
||||
$prefix = date('Ymd');
|
||||
self::assertEquals('application/pdf', $response->headers->get('Content-Type'));
|
||||
self::assertEquals('attachment; filename=' . $prefix . '-Customer_Name-project_name.pdf', $response->headers->get('Content-Disposition'));
|
||||
|
||||
$content = $response->getContent();
|
||||
self::assertIsString($content);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user