Next major version 2 with PHP 8.1, Symfony 6, Tabler UI, 2FA ... (#2902)
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
|
||||
namespace App\Tests\Export\Renderer;
|
||||
|
||||
use App\Configuration\LanguageFormattings;
|
||||
use App\Configuration\LocaleService;
|
||||
use App\Entity\Activity;
|
||||
use App\Entity\ActivityMeta;
|
||||
use App\Entity\Customer;
|
||||
@@ -26,7 +26,7 @@ use App\Event\CustomerMetaDisplayEvent;
|
||||
use App\Event\ProjectMetaDisplayEvent;
|
||||
use App\Event\TimesheetMetaDisplayEvent;
|
||||
use App\Export\ExportRendererInterface;
|
||||
use App\Export\RendererInterface;
|
||||
use App\Export\TimesheetExportInterface;
|
||||
use App\Repository\Query\TimesheetQuery;
|
||||
use App\Twig\LocaleFormatExtensions;
|
||||
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
|
||||
@@ -40,14 +40,14 @@ abstract class AbstractRendererTest extends KernelTestCase
|
||||
{
|
||||
/**
|
||||
* @param string $classname
|
||||
* @return RendererInterface
|
||||
* @return ExportRendererInterface|TimesheetExportInterface
|
||||
*/
|
||||
protected function getAbstractRenderer(string $classname)
|
||||
{
|
||||
$languages = [
|
||||
'en' => [
|
||||
'date' => 'Y.m.d',
|
||||
'duration' => '%h:%m h',
|
||||
'duration' => '%h:%m',
|
||||
'time' => 'H:i',
|
||||
]
|
||||
];
|
||||
@@ -57,7 +57,7 @@ abstract class AbstractRendererTest extends KernelTestCase
|
||||
$security->expects($this->any())->method('isGranted')->willReturn(true);
|
||||
|
||||
$translator = $this->createMock(TranslatorInterface::class);
|
||||
$dateExtension = new LocaleFormatExtensions(new LanguageFormattings($languages), $security);
|
||||
$dateExtension = new LocaleFormatExtensions(new LocaleService($languages), $security);
|
||||
|
||||
$dispatcher = new EventDispatcher();
|
||||
$dispatcher->addSubscriber(new MetaFieldColumnSubscriber());
|
||||
@@ -71,8 +71,7 @@ abstract class AbstractRendererTest extends KernelTestCase
|
||||
*/
|
||||
protected function render(ExportRendererInterface $renderer)
|
||||
{
|
||||
$customer = new Customer();
|
||||
$customer->setName('Customer Name');
|
||||
$customer = new Customer('Customer Name');
|
||||
$customer->setNumber('A-0123456789');
|
||||
$customer->setVatId('DE-9876543210');
|
||||
$customer->setMetaField((new CustomerMeta())->setName('customer-foo')->setValue('customer-bar')->setIsVisible(true));
|
||||
@@ -89,19 +88,21 @@ abstract class AbstractRendererTest extends KernelTestCase
|
||||
$activity->setProject($project);
|
||||
$activity->setMetaField((new ActivityMeta())->setName('activity-foo')->setValue('activity-bar')->setIsVisible(true));
|
||||
|
||||
$userMethods = ['getId', 'getPreferenceValue', 'getUsername'];
|
||||
$userMethods = ['getId', 'getPreferenceValue', 'getUsername', 'getUserIdentifier'];
|
||||
$user1 = $this->getMockBuilder(User::class)->onlyMethods($userMethods)->disableOriginalConstructor()->getMock();
|
||||
$user1->method('getId')->willReturn(1);
|
||||
$user1->method('getPreferenceValue')->willReturn('50');
|
||||
$user1->method('getUsername')->willReturn('foo-bar');
|
||||
$user1->method('getUserIdentifier')->willReturn('foo-bar');
|
||||
|
||||
$user2 = $this->getMockBuilder(User::class)->onlyMethods($userMethods)->disableOriginalConstructor()->getMock();
|
||||
$user2->method('getId')->willReturn(2);
|
||||
$user2->method('getUsername')->willReturn('hello-world');
|
||||
$user2->method('getUserIdentifier')->willReturn('hello-world');
|
||||
|
||||
$timesheet = new Timesheet();
|
||||
$timesheet
|
||||
->setDuration(3600)
|
||||
->setDuration(3600) // 60 minutes
|
||||
->setRate(293.27)
|
||||
->setUser($user1)
|
||||
->setActivity($activity)
|
||||
@@ -145,11 +146,14 @@ abstract class AbstractRendererTest extends KernelTestCase
|
||||
->addTag((new Tag())->setName('foo'))
|
||||
;
|
||||
|
||||
$userKevin = new User();
|
||||
$userKevin->setUserIdentifier('kevin');
|
||||
|
||||
$timesheet5 = new Timesheet();
|
||||
$timesheet5
|
||||
->setDuration(400)
|
||||
->setFixedRate(84)
|
||||
->setUser((new User())->setUsername('kevin'))
|
||||
->setUser($userKevin)
|
||||
->setActivity($activity)
|
||||
->setProject($project)
|
||||
->setBegin(new \DateTime('2019-06-16 12:00:00'))
|
||||
@@ -160,11 +164,14 @@ abstract class AbstractRendererTest extends KernelTestCase
|
||||
->setMetaField((new TimesheetMeta())->setName('foo2')->setValue('meta-bar2')->setIsVisible(true))
|
||||
;
|
||||
|
||||
$userNivek = new User();
|
||||
$userNivek->setUserIdentifier('nivek');
|
||||
|
||||
$timesheet6 = new Timesheet();
|
||||
$timesheet6
|
||||
->setDuration(400)
|
||||
->setFixedRate(-100.92)
|
||||
->setUser((new User())->setUsername('nivek'))
|
||||
->setUser($userNivek)
|
||||
->setActivity($activity)
|
||||
->setProject($project)
|
||||
->setBegin(new \DateTime('2019-06-16 12:00:00'))
|
||||
|
||||
@@ -17,7 +17,6 @@ use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||
* @covers \App\Export\Base\AbstractSpreadsheetRenderer
|
||||
* @covers \App\Export\Base\RendererTrait
|
||||
* @covers \App\Export\Renderer\CsvRenderer
|
||||
* @covers \App\Export\Renderer\AbstractSpreadsheetRenderer
|
||||
* @group integration
|
||||
*/
|
||||
class CsvRendererTest extends AbstractRendererTest
|
||||
|
||||
@@ -46,7 +46,7 @@ class HtmlRendererTest extends AbstractRendererTest
|
||||
{
|
||||
$kernel = self::bootKernel();
|
||||
/** @var Environment $twig */
|
||||
$twig = $kernel->getContainer()->get('twig');
|
||||
$twig = self::getContainer()->get('twig');
|
||||
|
||||
$token = $this->createMock(TokenInterface::class);
|
||||
$token->expects($this->any())->method('getUser')->willReturn(new User());
|
||||
@@ -57,7 +57,7 @@ class HtmlRendererTest extends AbstractRendererTest
|
||||
$app = $twig->getGlobals()['app'];
|
||||
$twig->addGlobal('app', $app);
|
||||
$app->setTokenStorage($tokenStorage);
|
||||
$stack = $kernel->getContainer()->get('request_stack');
|
||||
$stack = self::getContainer()->get('request_stack');
|
||||
$request = new Request();
|
||||
$request->setLocale('en');
|
||||
$stack->push($request);
|
||||
@@ -74,7 +74,7 @@ class HtmlRendererTest extends AbstractRendererTest
|
||||
$content = $response->getContent();
|
||||
|
||||
$this->assertStringContainsString('<h2 id="doc-title" contenteditable="true"', $content);
|
||||
$this->assertStringContainsString('<h3 id="doc-summary" contenteditable="true" data-original="Summary">Summary</h3>', $content);
|
||||
$this->assertStringContainsString('<h3 class="card-title" id="doc-summary" contenteditable="true" data-original="Summary">Summary</h3>', $content);
|
||||
$this->assertEquals(1, substr_count($content, 'id="export-summary"'));
|
||||
$this->assertEquals(1, substr_count($content, 'id="export-records"'));
|
||||
$this->assertEquals(1, substr_count($content, 'id="summary-project"'));
|
||||
@@ -82,7 +82,7 @@ class HtmlRendererTest extends AbstractRendererTest
|
||||
|
||||
$this->assertStringContainsString('<td>Customer Name</td>', $content);
|
||||
$this->assertStringContainsString('<td>project name</td>', $content);
|
||||
$this->assertStringContainsString('<span class="duration-format" data-duration="7000">01:56 h</span>', $content);
|
||||
$this->assertStringContainsString('<span class="duration-format" data-duration-decimal="1.94" data-duration="1:56">1:56</span>', $content);
|
||||
$this->assertStringContainsString('<td class="cost summary-rate">€2,437.12</td>', $content);
|
||||
$this->assertStringContainsString('-€100.92', $content);
|
||||
|
||||
|
||||
@@ -11,8 +11,8 @@ namespace App\Tests\Export\Renderer;
|
||||
|
||||
use App\Export\Renderer\PDFRenderer;
|
||||
use App\Export\Renderer\PdfRendererFactory;
|
||||
use App\Pdf\HtmlToPdfConverter;
|
||||
use App\Project\ProjectStatisticService;
|
||||
use App\Utils\HtmlToPdfConverter;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Twig\Environment;
|
||||
|
||||
|
||||
@@ -10,12 +10,11 @@
|
||||
namespace App\Tests\Export\Renderer;
|
||||
|
||||
use App\Export\Renderer\PDFRenderer;
|
||||
use App\Pdf\HtmlToPdfConverter;
|
||||
use App\Pdf\MPdfConverter;
|
||||
use App\Project\ProjectStatisticService;
|
||||
use App\Tests\Mocks\FileHelperFactory;
|
||||
use App\Utils\HtmlToPdfConverter;
|
||||
use App\Utils\MPdfConverter;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
|
||||
use Twig\Environment;
|
||||
|
||||
/**
|
||||
@@ -26,22 +25,6 @@ use Twig\Environment;
|
||||
*/
|
||||
class PdfRendererTest extends AbstractRendererTest
|
||||
{
|
||||
public function testDisposition()
|
||||
{
|
||||
$sut = new PDFRenderer(
|
||||
$this->createMock(Environment::class),
|
||||
$this->createMock(HtmlToPdfConverter::class),
|
||||
$this->createMock(ProjectStatisticService::class)
|
||||
);
|
||||
$this->assertEquals(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $sut->getDisposition());
|
||||
$sut->setDispositionInline(false);
|
||||
$this->assertEquals(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $sut->getDisposition());
|
||||
$sut->setDispositionInline(true);
|
||||
$this->assertEquals(ResponseHeaderBag::DISPOSITION_INLINE, $sut->getDisposition());
|
||||
$sut->setDispositionInline(false);
|
||||
$this->assertEquals(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $sut->getDisposition());
|
||||
}
|
||||
|
||||
public function testConfiguration()
|
||||
{
|
||||
$sut = new PDFRenderer(
|
||||
@@ -64,8 +47,8 @@ class PdfRendererTest extends AbstractRendererTest
|
||||
{
|
||||
$kernel = self::bootKernel();
|
||||
/** @var Environment $twig */
|
||||
$twig = $kernel->getContainer()->get('twig');
|
||||
$stack = $kernel->getContainer()->get('request_stack');
|
||||
$twig = self::getContainer()->get('twig');
|
||||
$stack = self::getContainer()->get('request_stack');
|
||||
$cacheDir = $kernel->getContainer()->getParameter('kernel.cache_dir');
|
||||
$converter = new MPdfConverter((new FileHelperFactory($this))->create(), $cacheDir);
|
||||
$request = new Request();
|
||||
@@ -74,12 +57,15 @@ class PdfRendererTest extends AbstractRendererTest
|
||||
|
||||
$sut = new PDFRenderer($twig, $converter, $this->createMock(ProjectStatisticService::class));
|
||||
|
||||
$response = $this->render($sut);
|
||||
|
||||
$prefix = date('Ymd');
|
||||
|
||||
$response = $this->render($sut);
|
||||
$this->assertEquals('application/pdf', $response->headers->get('Content-Type'));
|
||||
$this->assertEquals('attachment; filename=' . $prefix . '-Customer_Name-project_name.pdf', $response->headers->get('Content-Disposition'));
|
||||
|
||||
$this->assertNotEmpty($response->getContent());
|
||||
|
||||
$sut->setDispositionInline(true);
|
||||
$response = $this->render($sut);
|
||||
$this->assertEquals('inline; filename=' . $prefix . '-Customer_Name-project_name.pdf', $response->headers->get('Content-Disposition'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@ use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||
* @covers \App\Export\Base\AbstractSpreadsheetRenderer
|
||||
* @covers \App\Export\Base\RendererTrait
|
||||
* @covers \App\Export\Renderer\XlsxRenderer
|
||||
* @covers \App\Export\Renderer\AbstractSpreadsheetRenderer
|
||||
* @group integration
|
||||
*/
|
||||
class XlsxRendererTest extends AbstractRendererTest
|
||||
|
||||
Reference in New Issue
Block a user