added export context (#2216)
This commit is contained in:
@@ -92,14 +92,22 @@ class ExportControllerTest extends ControllerBaseTest
|
||||
$this->assertDataTableRowCount($client, 'datatable_export', 23);
|
||||
|
||||
// assert export type buttons are available
|
||||
$expected = ['csv', 'default.html.twig', 'default-budget.pdf.twig', 'default-internal.pdf.twig', 'default.pdf.twig', 'xlsx'];
|
||||
$expected = [
|
||||
'csv' => 'csv',
|
||||
'default.html.twig' => 'default.html.twig',
|
||||
'default-budget.pdf.twig' => 'default-budget.pdf.twig',
|
||||
'default-internal.pdf.twig' => 'default-internal.pdf.twig',
|
||||
'default.pdf.twig' => 'default.pdf.twig',
|
||||
'xlsx' => 'xlsx'
|
||||
];
|
||||
$node = $client->getCrawler()->filter('#export-buttons .startExportBtn');
|
||||
$this->assertEquals(\count($expected), $node->count());
|
||||
$this->assertGreaterThanOrEqual(\count($expected), $node->count());
|
||||
/** @var \DOMElement $button */
|
||||
foreach ($node->getIterator() as $button) {
|
||||
$type = $button->getAttribute('data-type');
|
||||
$this->assertContains($type, $expected);
|
||||
unset($expected[$type]);
|
||||
}
|
||||
$this->assertEmpty($expected);
|
||||
}
|
||||
|
||||
public function testIndexActionWithEntriesForTeamleadDoesNotShowUserWithoutTeam()
|
||||
@@ -144,14 +152,22 @@ class ExportControllerTest extends ControllerBaseTest
|
||||
$this->assertDataTableRowCount($client, 'datatable_export', 3);
|
||||
|
||||
// assert export type buttons are available
|
||||
$expected = ['csv', 'default.html.twig', 'default-budget.pdf.twig', 'default-internal.pdf.twig', 'default.pdf.twig', 'xlsx'];
|
||||
$expected = [
|
||||
'csv' => 'csv',
|
||||
'default.html.twig' => 'default.html.twig',
|
||||
'default-budget.pdf.twig' => 'default-budget.pdf.twig',
|
||||
'default-internal.pdf.twig' => 'default-internal.pdf.twig',
|
||||
'default.pdf.twig' => 'default.pdf.twig',
|
||||
'xlsx' => 'xlsx'
|
||||
];
|
||||
$node = $client->getCrawler()->filter('#export-buttons .startExportBtn');
|
||||
$this->assertEquals(\count($expected), $node->count());
|
||||
$this->assertGreaterThanOrEqual(\count($expected), $node->count());
|
||||
/** @var \DOMElement $button */
|
||||
foreach ($node->getIterator() as $button) {
|
||||
$type = $button->getAttribute('data-type');
|
||||
$this->assertContains($type, $expected);
|
||||
unset($expected[$type]);
|
||||
}
|
||||
$this->assertEmpty($expected);
|
||||
}
|
||||
|
||||
public function testExportActionWithMissingRenderer()
|
||||
|
||||
37
tests/Export/ExportContextTest.php
Normal file
37
tests/Export/ExportContextTest.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<?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;
|
||||
|
||||
use App\Export\ExportContext;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
* @covers \App\Export\ExportContext
|
||||
*/
|
||||
class ExportContextTest extends TestCase
|
||||
{
|
||||
public function testEmptyObject()
|
||||
{
|
||||
$sut = new ExportContext();
|
||||
|
||||
self::assertIsArray($sut->getOptions());
|
||||
self::assertEmpty($sut->getOptions());
|
||||
self::assertNull($sut->getOption('unknown'));
|
||||
}
|
||||
|
||||
public function testSetterAndGetter()
|
||||
{
|
||||
$sut = new ExportContext();
|
||||
|
||||
self::assertNull($sut->getOption('unknown'));
|
||||
$sut->setOption('unknown', 'foo');
|
||||
self::assertEquals('foo', $sut->getOption('unknown'));
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,6 @@ namespace App\Tests\Export\Renderer;
|
||||
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;
|
||||
@@ -26,7 +25,6 @@ class PdfRendererFactoryTest extends TestCase
|
||||
{
|
||||
$sut = new PdfRendererFactory(
|
||||
$this->createMock(Environment::class),
|
||||
$this->createMock(UserDateTimeFactory::class),
|
||||
$this->createMock(HtmlToPdfConverter::class),
|
||||
$this->createMock(ProjectRepository::class)
|
||||
);
|
||||
|
||||
@@ -11,7 +11,6 @@ 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;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
@@ -25,16 +24,10 @@ use Twig\Environment;
|
||||
*/
|
||||
class PdfRendererTest extends AbstractRendererTest
|
||||
{
|
||||
protected function getDateTimeFactory()
|
||||
{
|
||||
return (new UserDateTimeFactoryFactory($this))->create();
|
||||
}
|
||||
|
||||
public function testConfiguration()
|
||||
{
|
||||
$sut = new PDFRenderer(
|
||||
$this->createMock(Environment::class),
|
||||
$this->getDateTimeFactory(),
|
||||
$this->createMock(HtmlToPdfConverter::class),
|
||||
$this->createMock(ProjectRepository::class)
|
||||
);
|
||||
@@ -42,6 +35,11 @@ class PdfRendererTest extends AbstractRendererTest
|
||||
$this->assertEquals('pdf', $sut->getId());
|
||||
$this->assertEquals('pdf', $sut->getTitle());
|
||||
$this->assertEquals('pdf', $sut->getIcon());
|
||||
$this->assertEquals([], $sut->getPdfOptions());
|
||||
|
||||
$sut->setPdfOption('foo', 'bar');
|
||||
$sut->setPdfOption('bar1', 'foo1');
|
||||
$this->assertEquals(['foo' => 'bar', 'bar1' => 'foo1'], $sut->getPdfOptions());
|
||||
}
|
||||
|
||||
public function testRender()
|
||||
@@ -56,7 +54,7 @@ class PdfRendererTest extends AbstractRendererTest
|
||||
$request->setLocale('en');
|
||||
$stack->push($request);
|
||||
|
||||
$sut = new PDFRenderer($twig, $this->getDateTimeFactory(), $converter, $this->createMock(ProjectRepository::class));
|
||||
$sut = new PDFRenderer($twig, $converter, $this->createMock(ProjectRepository::class));
|
||||
|
||||
$response = $this->render($sut);
|
||||
|
||||
|
||||
@@ -11,7 +11,6 @@ namespace App\Tests\Export\Timesheet;
|
||||
|
||||
use App\Export\Timesheet\PDFRenderer;
|
||||
use App\Repository\ProjectRepository;
|
||||
use App\Tests\Mocks\Security\UserDateTimeFactoryFactory;
|
||||
use App\Utils\HtmlToPdfConverter;
|
||||
use App\Utils\MPdfConverter;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
@@ -25,16 +24,10 @@ use Twig\Environment;
|
||||
*/
|
||||
class PdfRendererTest extends AbstractRendererTest
|
||||
{
|
||||
protected function getDateTimeFactory()
|
||||
{
|
||||
return (new UserDateTimeFactoryFactory($this))->create();
|
||||
}
|
||||
|
||||
public function testConfiguration()
|
||||
{
|
||||
$sut = new PDFRenderer(
|
||||
$this->createMock(Environment::class),
|
||||
$this->getDateTimeFactory(),
|
||||
$this->createMock(HtmlToPdfConverter::class),
|
||||
$this->createMock(ProjectRepository::class)
|
||||
);
|
||||
@@ -54,7 +47,7 @@ class PdfRendererTest extends AbstractRendererTest
|
||||
$request->setLocale('en');
|
||||
$stack->push($request);
|
||||
|
||||
$sut = new PDFRenderer($twig, $this->getDateTimeFactory(), $converter, $this->createMock(ProjectRepository::class));
|
||||
$sut = new PDFRenderer($twig, $converter, $this->createMock(ProjectRepository::class));
|
||||
|
||||
$response = $this->render($sut);
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
namespace App\Tests\Twig;
|
||||
|
||||
use App\Configuration\LanguageFormattings;
|
||||
use App\Entity\User;
|
||||
use App\Twig\DateExtensions;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
@@ -54,7 +55,7 @@ class DateExtensionsTest extends TestCase
|
||||
|
||||
public function testGetFunctions()
|
||||
{
|
||||
$functions = ['get_format_duration'];
|
||||
$functions = ['get_format_duration', 'create_date'];
|
||||
$sut = $this->getSut('de', []);
|
||||
$twigFunctions = $sut->getFunctions();
|
||||
$this->assertCount(\count($functions), $twigFunctions);
|
||||
@@ -217,4 +218,21 @@ class DateExtensionsTest extends TestCase
|
||||
/* @phpstan-ignore-next-line */
|
||||
$this->assertEquals(189.45, $sut->dateTimeFull(189.45));
|
||||
}
|
||||
|
||||
public function testCreateDate()
|
||||
{
|
||||
$user = new User();
|
||||
$user->setTimezone('Europe/Berlin');
|
||||
$sut = $this->getSut('en', []);
|
||||
$date = $sut->createDate('now', $user);
|
||||
$this->assertEquals('Europe/Berlin', $date->getTimezone()->getName());
|
||||
|
||||
$user->setTimezone('Asia/Dubai');
|
||||
$date = $sut->createDate('2019-08-27 16:30:45', $user);
|
||||
$this->assertEquals('2019-08-27T16:30:45+0400', $date->format(DATE_ISO8601));
|
||||
$this->assertEquals('Asia/Dubai', $date->getTimezone()->getName());
|
||||
|
||||
$date = $sut->createDate('2019-08-27 16:30:45', null);
|
||||
$this->assertEquals(date_default_timezone_get(), $date->getTimezone()->getName());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user