customize html and pdf exports with twig templates (#1582)
This commit is contained in:
@@ -25,6 +25,7 @@ use App\Event\ActivityMetaDisplayEvent;
|
||||
use App\Event\CustomerMetaDisplayEvent;
|
||||
use App\Event\ProjectMetaDisplayEvent;
|
||||
use App\Event\TimesheetMetaDisplayEvent;
|
||||
use App\Export\ExportRendererInterface;
|
||||
use App\Export\RendererInterface;
|
||||
use App\Repository\Query\TimesheetQuery;
|
||||
use App\Twig\DateExtensions;
|
||||
@@ -74,10 +75,10 @@ abstract class AbstractRendererTest extends KernelTestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @param RendererInterface $renderer
|
||||
* @param ExportRendererInterface $renderer
|
||||
* @return \Symfony\Component\HttpFoundation\Response
|
||||
*/
|
||||
protected function render(RendererInterface $renderer)
|
||||
protected function render(ExportRendererInterface $renderer)
|
||||
{
|
||||
$customer = new Customer();
|
||||
$customer->setName('Customer Name');
|
||||
|
||||
38
tests/Export/Renderer/HtmlRendererFactoryTest.php
Normal file
38
tests/Export/Renderer/HtmlRendererFactoryTest.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace App\Tests\Export\Renderer;
|
||||
|
||||
use App\Export\Renderer\HtmlRenderer;
|
||||
use App\Export\Renderer\HtmlRendererFactory;
|
||||
use App\Repository\ProjectRepository;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
use Twig\Environment;
|
||||
|
||||
/**
|
||||
* @covers \App\Export\Renderer\HtmlRendererFactory
|
||||
*/
|
||||
class HtmlRendererFactoryTest extends TestCase
|
||||
{
|
||||
public function testCreate()
|
||||
{
|
||||
$sut = new HtmlRendererFactory(
|
||||
$this->createMock(Environment::class),
|
||||
$this->createMock(EventDispatcherInterface::class),
|
||||
$this->createMock(ProjectRepository::class)
|
||||
);
|
||||
|
||||
/** @var HtmlRenderer $renderer */
|
||||
$renderer = $sut->create('foo', 'bar.html.twig');
|
||||
|
||||
self::assertInstanceOf(HtmlRenderer::class, $renderer);
|
||||
self::assertEquals('foo', $renderer->getId());
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,7 @@
|
||||
namespace App\Tests\Export\Renderer;
|
||||
|
||||
use App\Export\Renderer\HtmlRenderer;
|
||||
use App\Repository\ProjectRepository;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcher;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Twig\Environment;
|
||||
@@ -26,7 +27,8 @@ class HtmlRendererTest extends AbstractRendererTest
|
||||
{
|
||||
$sut = new HtmlRenderer(
|
||||
$this->createMock(Environment::class),
|
||||
new EventDispatcher()
|
||||
new EventDispatcher(),
|
||||
$this->createMock(ProjectRepository::class)
|
||||
);
|
||||
|
||||
$this->assertEquals('html', $sut->getId());
|
||||
@@ -44,7 +46,7 @@ class HtmlRendererTest extends AbstractRendererTest
|
||||
$request->setLocale('en');
|
||||
$stack->push($request);
|
||||
|
||||
$sut = new HtmlRenderer($twig, new EventDispatcher());
|
||||
$sut = new HtmlRenderer($twig, new EventDispatcher(), $this->createMock(ProjectRepository::class));
|
||||
|
||||
$response = $this->render($sut);
|
||||
|
||||
|
||||
41
tests/Export/Renderer/PdfRendererFactoryTest.php
Normal file
41
tests/Export/Renderer/PdfRendererFactoryTest.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace App\Tests\Export\Renderer;
|
||||
|
||||
use App\Export\Renderer\HtmlRenderer;
|
||||
use App\Export\Renderer\PDFRenderer;
|
||||
use App\Export\Renderer\PdfRendererFactory;
|
||||
use App\Repository\ProjectRepository;
|
||||
use App\Timesheet\UserDateTimeFactory;
|
||||
use App\Utils\HtmlToPdfConverter;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Twig\Environment;
|
||||
|
||||
/**
|
||||
* @covers \App\Export\Renderer\PdfRendererFactory
|
||||
*/
|
||||
class PdfRendererFactoryTest extends TestCase
|
||||
{
|
||||
public function testCreate()
|
||||
{
|
||||
$sut = new PdfRendererFactory(
|
||||
$this->createMock(Environment::class),
|
||||
$this->createMock(UserDateTimeFactory::class),
|
||||
$this->createMock(HtmlToPdfConverter::class),
|
||||
$this->createMock(ProjectRepository::class)
|
||||
);
|
||||
|
||||
/** @var HtmlRenderer $renderer */
|
||||
$renderer = $sut->create('foo', 'bar.pdf.twig');
|
||||
|
||||
self::assertInstanceOf(PDFRenderer::class, $renderer);
|
||||
self::assertEquals('foo', $renderer->getId());
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,7 @@
|
||||
namespace App\Tests\Export\Renderer;
|
||||
|
||||
use App\Export\Renderer\PDFRenderer;
|
||||
use App\Repository\ProjectRepository;
|
||||
use App\Tests\Mocks\Security\UserDateTimeFactoryFactory;
|
||||
use App\Utils\HtmlToPdfConverter;
|
||||
use App\Utils\MPdfConverter;
|
||||
@@ -34,7 +35,8 @@ class PdfRendererTest extends AbstractRendererTest
|
||||
$sut = new PDFRenderer(
|
||||
$this->createMock(Environment::class),
|
||||
$this->getDateTimeFactory(),
|
||||
$this->createMock(HtmlToPdfConverter::class)
|
||||
$this->createMock(HtmlToPdfConverter::class),
|
||||
$this->createMock(ProjectRepository::class)
|
||||
);
|
||||
|
||||
$this->assertEquals('pdf', $sut->getId());
|
||||
@@ -54,7 +56,7 @@ class PdfRendererTest extends AbstractRendererTest
|
||||
$request->setLocale('en');
|
||||
$stack->push($request);
|
||||
|
||||
$sut = new PDFRenderer($twig, $this->getDateTimeFactory(), $converter);
|
||||
$sut = new PDFRenderer($twig, $this->getDateTimeFactory(), $converter, $this->createMock(ProjectRepository::class));
|
||||
|
||||
$response = $this->render($sut);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user