Configurable PDF exports (#5641)
This commit is contained in:
@@ -26,7 +26,7 @@ use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
abstract class AbstractRendererTestCase extends KernelTestCase
|
||||
{
|
||||
protected function render(ExportRendererInterface $renderer): Response
|
||||
protected function render(ExportRendererInterface $renderer, bool $exportDecimal = false): Response
|
||||
{
|
||||
$customer = new Customer('Customer Name');
|
||||
$customer->setNumber('A-0123456789');
|
||||
@@ -129,11 +129,15 @@ abstract class AbstractRendererTestCase extends KernelTestCase
|
||||
|
||||
$entries = [$timesheet, $timesheet2, $timesheet3, $timesheet4, $timesheet5, $timesheet6];
|
||||
|
||||
$currentUser = $this->createMock(User::class);
|
||||
$currentUser->expects($this->any())->method('isExportDecimal')->willReturn($exportDecimal);
|
||||
|
||||
$query = new TimesheetQuery();
|
||||
$query->setActivities([$activity]);
|
||||
$query->setBegin(new \DateTime());
|
||||
$query->setEnd(new \DateTime());
|
||||
$query->setProjects([$project]);
|
||||
$query->setCurrentUser($currentUser);
|
||||
|
||||
return $renderer->render($entries, $query);
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
namespace App\Tests\Export\Renderer;
|
||||
|
||||
use App\Export\Base\CsvRenderer;
|
||||
use App\Export\ColumnConverter;
|
||||
use App\Export\Renderer\CsvRendererFactory;
|
||||
use App\Export\Template;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
@@ -24,12 +25,17 @@ class CsvRendererFactoryTest extends TestCase
|
||||
{
|
||||
public function testCreate(): void
|
||||
{
|
||||
$sut = new CsvRendererFactory(
|
||||
$this->createMock(EventDispatcherInterface::class),
|
||||
$dispatcher = $this->createMock(EventDispatcherInterface::class);
|
||||
$converter = new ColumnConverter(
|
||||
$dispatcher,
|
||||
$this->createMock(Security::class),
|
||||
$this->createMock(TranslatorInterface::class),
|
||||
$this->createMock(LoggerInterface::class)
|
||||
);
|
||||
$sut = new CsvRendererFactory(
|
||||
$converter,
|
||||
$dispatcher,
|
||||
$this->createMock(TranslatorInterface::class),
|
||||
);
|
||||
|
||||
$template = new Template('foo-id', 'bar-title');
|
||||
$template->setLocale('it_IT');
|
||||
@@ -39,5 +45,6 @@ class CsvRendererFactoryTest extends TestCase
|
||||
self::assertInstanceOf(CsvRenderer::class, $renderer);
|
||||
self::assertEquals('foo-id', $renderer->getId());
|
||||
self::assertEquals('bar-title', $renderer->getTitle());
|
||||
self::assertTrue($renderer->isInternal());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,5 +35,6 @@ class HtmlRendererFactoryTest extends TestCase
|
||||
self::assertInstanceOf(HtmlRenderer::class, $renderer);
|
||||
self::assertEquals('foo', $renderer->getId());
|
||||
self::assertEquals('print', $renderer->getTitle());
|
||||
self::assertFalse($renderer->isInternal());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ namespace App\Tests\Export\Renderer;
|
||||
use App\Activity\ActivityStatisticService;
|
||||
use App\Entity\User;
|
||||
use App\Export\Base\HtmlRenderer;
|
||||
use App\Export\Base\RendererTrait;
|
||||
use App\Project\ProjectStatisticService;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\Group;
|
||||
@@ -23,9 +24,7 @@ use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
use Twig\Environment;
|
||||
|
||||
/**
|
||||
* @covers \App\Export\Base\RendererTrait
|
||||
*/
|
||||
#[CoversClass(RendererTrait::class)]
|
||||
#[CoversClass(HtmlRenderer::class)]
|
||||
#[Group('integration')]
|
||||
class HtmlRendererTest extends AbstractRendererTestCase
|
||||
|
||||
@@ -10,27 +10,38 @@
|
||||
namespace App\Tests\Export\Renderer;
|
||||
|
||||
use App\Export\Base\PDFRenderer;
|
||||
use App\Export\Base\PdfTemplateRenderer;
|
||||
use App\Export\Renderer\PdfRendererFactory;
|
||||
use App\Pdf\HtmlToPdfConverter;
|
||||
use App\Project\ProjectStatisticService;
|
||||
use App\Export\Template;
|
||||
use App\Tests\Mocks\Export\PdfRendererFactoryMock;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Twig\Environment;
|
||||
|
||||
#[CoversClass(PdfRendererFactory::class)]
|
||||
class PdfRendererFactoryTest extends TestCase
|
||||
{
|
||||
public function testCreate(): void
|
||||
{
|
||||
$sut = new PdfRendererFactory(
|
||||
$this->createMock(Environment::class),
|
||||
$this->createMock(HtmlToPdfConverter::class),
|
||||
$this->createMock(ProjectStatisticService::class)
|
||||
);
|
||||
$mock = new PdfRendererFactoryMock($this);
|
||||
$sut = $mock->create();
|
||||
|
||||
$renderer = $sut->create('foo', 'bar.pdf.twig');
|
||||
|
||||
self::assertInstanceOf(PDFRenderer::class, $renderer);
|
||||
self::assertEquals('foo', $renderer->getId());
|
||||
self::assertFalse($renderer->isInternal());
|
||||
}
|
||||
|
||||
public function testCreateFromTemplate(): void
|
||||
{
|
||||
$mock = new PdfRendererFactoryMock($this);
|
||||
$sut = $mock->create();
|
||||
|
||||
$template = new Template('foo', 'bar');
|
||||
$renderer = $sut->createFromTemplate($template);
|
||||
|
||||
self::assertInstanceOf(PdfTemplateRenderer::class, $renderer);
|
||||
self::assertEquals('foo', $renderer->getId());
|
||||
self::assertTrue($renderer->isInternal());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,8 +10,10 @@
|
||||
namespace App\Tests\Export\Renderer;
|
||||
|
||||
use App\Export\Base\PDFRenderer;
|
||||
use App\Export\Base\RendererTrait;
|
||||
use App\Pdf\HtmlToPdfConverter;
|
||||
use App\Pdf\MPdfConverter;
|
||||
use App\Pdf\PdfRendererTrait;
|
||||
use App\Project\ProjectStatisticService;
|
||||
use App\Tests\Mocks\FileHelperFactory;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
@@ -20,9 +22,8 @@ use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\RequestStack;
|
||||
use Twig\Environment;
|
||||
|
||||
/**
|
||||
* @covers \App\Export\Base\RendererTrait
|
||||
*/
|
||||
#[CoversClass(PDFRendererTrait::class)]
|
||||
#[CoversClass(RendererTrait::class)]
|
||||
#[CoversClass(PDFRenderer::class)]
|
||||
#[Group('integration')]
|
||||
class PdfRendererTest extends AbstractRendererTestCase
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
namespace App\Tests\Export\Renderer;
|
||||
|
||||
use App\Export\Base\XlsxRenderer;
|
||||
use App\Export\ColumnConverter;
|
||||
use App\Export\Renderer\XlsxRendererFactory;
|
||||
use App\Export\Template;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
@@ -24,12 +25,17 @@ class XlsxRendererFactoryTest extends TestCase
|
||||
{
|
||||
public function testCreate(): void
|
||||
{
|
||||
$sut = new XlsxRendererFactory(
|
||||
$this->createMock(EventDispatcherInterface::class),
|
||||
$dispatcher = $this->createMock(EventDispatcherInterface::class);
|
||||
$converter = new ColumnConverter(
|
||||
$dispatcher,
|
||||
$this->createMock(Security::class),
|
||||
$this->createMock(TranslatorInterface::class),
|
||||
$this->createMock(LoggerInterface::class)
|
||||
);
|
||||
$sut = new XlsxRendererFactory(
|
||||
$converter,
|
||||
$dispatcher,
|
||||
$this->createMock(TranslatorInterface::class),
|
||||
);
|
||||
|
||||
$template = new Template('foo-id', 'bar-title');
|
||||
$template->setLocale('it_IT');
|
||||
@@ -39,5 +45,6 @@ class XlsxRendererFactoryTest extends TestCase
|
||||
self::assertInstanceOf(XlsxRenderer::class, $renderer);
|
||||
self::assertEquals('foo-id', $renderer->getId());
|
||||
self::assertEquals('bar-title', $renderer->getTitle());
|
||||
self::assertTrue($renderer->isInternal());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user