Release 2.22.0 (#5043)
This commit is contained in:
@@ -34,7 +34,7 @@ class PermissionControllerTest extends ControllerBaseTest
|
||||
$client = $this->getClientForAuthenticatedUser(User::ROLE_SUPER_ADMIN);
|
||||
$this->assertAccessIsGranted($client, '/admin/permissions');
|
||||
$this->assertHasDataTable($client);
|
||||
$this->assertDataTableRowCount($client, 'datatable_user_admin_permissions', 134);
|
||||
$this->assertDataTableRowCount($client, 'datatable_user_admin_permissions', 135);
|
||||
$this->assertPageActions($client, [
|
||||
'create modal-ajax-form' => $this->createUrl('/admin/permissions/roles/create'),
|
||||
]);
|
||||
|
||||
@@ -18,13 +18,23 @@ use PHPUnit\Framework\TestCase;
|
||||
*/
|
||||
class ConfigureMainMenuEventTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @deprecated
|
||||
* @group legacy
|
||||
*/
|
||||
public function testLegacy(): void
|
||||
{
|
||||
$sut = new ConfigureMainMenuEvent();
|
||||
|
||||
self::assertNotNull($sut->getAppsMenu());
|
||||
}
|
||||
|
||||
public function testGetterAndSetter(): void
|
||||
{
|
||||
$sut = new ConfigureMainMenuEvent();
|
||||
|
||||
self::assertNotNull($sut->getMenu());
|
||||
self::assertNotNull($sut->getAdminMenu());
|
||||
self::assertNotNull($sut->getAppsMenu());
|
||||
self::assertNotNull($sut->getSystemMenu());
|
||||
|
||||
self::assertNull($sut->getTimesheetMenu());
|
||||
|
||||
@@ -34,15 +34,15 @@ use Symfony\Bundle\SecurityBundle\Security;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcher;
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Contracts\Translation\TranslatorInterface;
|
||||
|
||||
abstract class AbstractRendererTest extends KernelTestCase
|
||||
{
|
||||
/**
|
||||
* @param string $classname
|
||||
* @return ExportRendererInterface|TimesheetExportInterface
|
||||
* @param class-string $classname
|
||||
*/
|
||||
protected function getAbstractRenderer(string $classname)
|
||||
protected function getAbstractRenderer(string $classname): ExportRendererInterface|TimesheetExportInterface
|
||||
{
|
||||
$languages = [
|
||||
'en' => LocaleService::DEFAULT_SETTINGS
|
||||
@@ -53,7 +53,7 @@ abstract class AbstractRendererTest extends KernelTestCase
|
||||
$security->expects($this->any())->method('isGranted')->willReturn(true);
|
||||
|
||||
$translator = $this->createMock(TranslatorInterface::class);
|
||||
$dateExtension = new LocaleFormatExtensions(new LocaleService($languages), $security);
|
||||
$dateExtension = new LocaleFormatExtensions(new LocaleService($languages));
|
||||
|
||||
$dispatcher = new EventDispatcher();
|
||||
$dispatcher->addSubscriber(new MetaFieldColumnSubscriber());
|
||||
@@ -61,11 +61,7 @@ abstract class AbstractRendererTest extends KernelTestCase
|
||||
return new $classname($translator, $dateExtension, $dispatcher, $security);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ExportRendererInterface $renderer
|
||||
* @return \Symfony\Component\HttpFoundation\Response
|
||||
*/
|
||||
protected function render(ExportRendererInterface $renderer)
|
||||
protected function render(ExportRendererInterface $renderer): Response
|
||||
{
|
||||
$customer = new Customer('Customer Name');
|
||||
$customer->setNumber('A-0123456789');
|
||||
@@ -198,29 +194,29 @@ class MetaFieldColumnSubscriber implements EventSubscriberInterface
|
||||
];
|
||||
}
|
||||
|
||||
public function loadTimesheetField(TimesheetMetaDisplayEvent $event)
|
||||
public function loadTimesheetField(TimesheetMetaDisplayEvent $event): void
|
||||
{
|
||||
$event->addField($this->prepareEntity(new TimesheetMeta(), 'foo'));
|
||||
$event->addField($this->prepareEntity(new TimesheetMeta(), 'foo2'));
|
||||
}
|
||||
|
||||
public function loadCustomerField(CustomerMetaDisplayEvent $event)
|
||||
public function loadCustomerField(CustomerMetaDisplayEvent $event): void
|
||||
{
|
||||
$event->addField($this->prepareEntity(new CustomerMeta(), 'customer-foo'));
|
||||
}
|
||||
|
||||
public function loadProjectField(ProjectMetaDisplayEvent $event)
|
||||
public function loadProjectField(ProjectMetaDisplayEvent $event): void
|
||||
{
|
||||
$event->addField($this->prepareEntity(new ProjectMeta(), 'project-foo'));
|
||||
$event->addField($this->prepareEntity(new ProjectMeta(), 'project-foo2')->setIsVisible(false));
|
||||
}
|
||||
|
||||
public function loadActivityField(ActivityMetaDisplayEvent $event)
|
||||
public function loadActivityField(ActivityMetaDisplayEvent $event): void
|
||||
{
|
||||
$event->addField($this->prepareEntity(new ActivityMeta(), 'activity-foo'));
|
||||
}
|
||||
|
||||
private function prepareEntity(MetaTableTypeInterface $meta, string $name)
|
||||
private function prepareEntity(MetaTableTypeInterface $meta, string $name): MetaTableTypeInterface
|
||||
{
|
||||
return $meta
|
||||
->setLabel('Working place')
|
||||
|
||||
@@ -42,7 +42,9 @@ class UserExporterTest extends TestCase
|
||||
$user->setEmail('test@example.com');
|
||||
$user->setEnabled(false);
|
||||
$user->addRole(User::ROLE_TEAMLEAD);
|
||||
$date = $user->getRegisteredAt();
|
||||
|
||||
$date = new \DateTime('2024-09-01 14:45:00');
|
||||
$user->setRegisteredAt($date);
|
||||
|
||||
$sut = new UserExporter($spreadsheetExporter, $annotationExtractor, $userPreferenceExtractor);
|
||||
$spreadsheet = $sut->export([$user], new UserPreferenceDisplayEvent(UserPreferenceDisplayEvent::EXPORT));
|
||||
|
||||
@@ -33,15 +33,15 @@ use Symfony\Bundle\SecurityBundle\Security;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcher;
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Contracts\Translation\TranslatorInterface;
|
||||
|
||||
abstract class AbstractRendererTest extends KernelTestCase
|
||||
{
|
||||
/**
|
||||
* @param string $classname
|
||||
* @return TimesheetExportInterface
|
||||
* @param class-string $classname
|
||||
*/
|
||||
protected function getAbstractRenderer(string $classname)
|
||||
protected function getAbstractRenderer(string $classname): TimesheetExportInterface
|
||||
{
|
||||
$languages = [
|
||||
'en' => LocaleService::DEFAULT_SETTINGS
|
||||
@@ -55,7 +55,7 @@ abstract class AbstractRendererTest extends KernelTestCase
|
||||
$security->expects($this->any())->method('isGranted')->willReturn(true);
|
||||
|
||||
$translator = $this->getMockBuilder(TranslatorInterface::class)->getMock();
|
||||
$dateExtension = new LocaleFormatExtensions(new LocaleService($languages), $security);
|
||||
$dateExtension = new LocaleFormatExtensions(new LocaleService($languages));
|
||||
|
||||
$dispatcher = new EventDispatcher();
|
||||
$dispatcher->addSubscriber(new MetaFieldColumnSubscriber());
|
||||
@@ -63,11 +63,7 @@ abstract class AbstractRendererTest extends KernelTestCase
|
||||
return new $classname($translator, $dateExtension, $dispatcher, $security);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param TimesheetExportInterface $renderer
|
||||
* @return \Symfony\Component\HttpFoundation\Response
|
||||
*/
|
||||
protected function render(TimesheetExportInterface $renderer)
|
||||
protected function render(TimesheetExportInterface $renderer): Response
|
||||
{
|
||||
$customer = new Customer('Customer Name');
|
||||
$customer->setNumber('A-0123456789');
|
||||
@@ -185,29 +181,29 @@ class MetaFieldColumnSubscriber implements EventSubscriberInterface
|
||||
];
|
||||
}
|
||||
|
||||
public function loadTimesheetField(TimesheetMetaDisplayEvent $event)
|
||||
public function loadTimesheetField(TimesheetMetaDisplayEvent $event): void
|
||||
{
|
||||
$event->addField($this->prepareEntity(new TimesheetMeta(), 'foo'));
|
||||
$event->addField($this->prepareEntity(new TimesheetMeta(), 'foo2'));
|
||||
}
|
||||
|
||||
public function loadCustomerField(CustomerMetaDisplayEvent $event)
|
||||
public function loadCustomerField(CustomerMetaDisplayEvent $event): void
|
||||
{
|
||||
$event->addField($this->prepareEntity(new CustomerMeta(), 'customer-foo'));
|
||||
}
|
||||
|
||||
public function loadProjectField(ProjectMetaDisplayEvent $event)
|
||||
public function loadProjectField(ProjectMetaDisplayEvent $event): void
|
||||
{
|
||||
$event->addField($this->prepareEntity(new ProjectMeta(), 'project-foo'));
|
||||
$event->addField($this->prepareEntity(new ProjectMeta(), 'project-foo2')->setIsVisible(false));
|
||||
}
|
||||
|
||||
public function loadActivityField(ActivityMetaDisplayEvent $event)
|
||||
public function loadActivityField(ActivityMetaDisplayEvent $event): void
|
||||
{
|
||||
$event->addField($this->prepareEntity(new ActivityMeta(), 'activity-foo'));
|
||||
}
|
||||
|
||||
private function prepareEntity(MetaTableTypeInterface $meta, string $name)
|
||||
private function prepareEntity(MetaTableTypeInterface $meta, string $name): MetaTableTypeInterface
|
||||
{
|
||||
return $meta
|
||||
->setLabel('Working place')
|
||||
|
||||
@@ -20,7 +20,7 @@ class CustomerLoaderTest extends AbstractLoaderTest
|
||||
{
|
||||
public function testLoadResults(): void
|
||||
{
|
||||
$em = $this->getEntityManagerMock(1);
|
||||
$em = $this->getEntityManagerMock(0);
|
||||
|
||||
$query = new CustomerQuery();
|
||||
$query->loadTeams();
|
||||
@@ -31,4 +31,22 @@ class CustomerLoaderTest extends AbstractLoaderTest
|
||||
|
||||
$sut->loadResults([$entity]);
|
||||
}
|
||||
|
||||
public function testLoadResultsWithMocks(): void
|
||||
{
|
||||
$em = $this->getEntityManagerMock(1);
|
||||
|
||||
$query = new CustomerQuery();
|
||||
$query->loadTeams();
|
||||
|
||||
$sut = new CustomerLoader($em, $query);
|
||||
|
||||
$entity = $this->createMock(Customer::class);
|
||||
$entity->method('getId')->willReturn(1);
|
||||
|
||||
$entity2 = $this->createMock(Customer::class);
|
||||
$entity->method('getId')->willReturn(2);
|
||||
|
||||
$sut->loadResults([$entity, $entity2]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,6 @@ use App\Entity\Timesheet;
|
||||
use App\Entity\User;
|
||||
use App\Twig\LocaleFormatExtensions;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Bundle\SecurityBundle\Security;
|
||||
use Symfony\Component\Intl\Util\IntlTestHelper;
|
||||
use Twig\TwigFilter;
|
||||
use Twig\TwigFunction;
|
||||
@@ -55,10 +54,7 @@ class LocaleFormatExtensionsTest extends TestCase
|
||||
$user = new User();
|
||||
$user->setTimezone('Europe/Vienna');
|
||||
|
||||
$security = $this->createMock(Security::class);
|
||||
$security->expects($this->any())->method('getUser')->willReturn($user);
|
||||
|
||||
$sut = new LocaleFormatExtensions(new LocaleService($languageSettings), $security);
|
||||
$sut = new LocaleFormatExtensions(new LocaleService($languageSettings));
|
||||
$sut->setLocale($locale);
|
||||
|
||||
return $sut;
|
||||
@@ -502,9 +498,7 @@ class LocaleFormatExtensionsTest extends TestCase
|
||||
],
|
||||
];
|
||||
|
||||
$security = $this->createMock(Security::class);
|
||||
|
||||
$sut = new LocaleFormatExtensions(new LocaleService($this->localeEn), $security);
|
||||
$sut = new LocaleFormatExtensions(new LocaleService($this->localeEn));
|
||||
$sut->setLocale('en');
|
||||
|
||||
self::assertEquals($expected, $sut->getJavascriptConfiguration());
|
||||
@@ -586,22 +580,6 @@ class LocaleFormatExtensionsTest extends TestCase
|
||||
self::assertFalse($sut->isWeekend(new \DateTime('first friday this month')));
|
||||
self::assertTrue($sut->isWeekend(new \DateTime('first saturday this month')));
|
||||
self::assertTrue($sut->isWeekend(new \DateTime('first sunday this month')));
|
||||
|
||||
// seconds case: a user with work-hour configuration
|
||||
$user = new User();
|
||||
$user->setWorkHoursTuesday(1);
|
||||
$user->setWorkHoursThursday(1);
|
||||
$user->setWorkHoursSaturday(1);
|
||||
$user->setWorkHoursSunday(1);
|
||||
|
||||
$sut = $this->getSut('en', $this->localeEn);
|
||||
self::assertTrue($sut->isWeekend(new \DateTime('first monday this month'), $user));
|
||||
self::assertFalse($sut->isWeekend(new \DateTime('first tuesday this month'), $user));
|
||||
self::assertTrue($sut->isWeekend(new \DateTime('first wednesday this month'), $user));
|
||||
self::assertFalse($sut->isWeekend(new \DateTime('first thursday this month'), $user));
|
||||
self::assertTrue($sut->isWeekend(new \DateTime('first friday this month'), $user));
|
||||
self::assertFalse($sut->isWeekend(new \DateTime('first saturday this month'), $user));
|
||||
self::assertFalse($sut->isWeekend(new \DateTime('first sunday this month'), $user));
|
||||
}
|
||||
|
||||
protected function getTimesheet($seconds): Timesheet
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
|
||||
require __DIR__ . '/../vendor/autoload.php';
|
||||
|
||||
// TODO remove once PARTIAL usage was replaced entirely
|
||||
\Doctrine\Deprecations\Deprecation::ignoreDeprecations('https://github.com/doctrine/orm/issues/8471');
|
||||
|
||||
if (isset($_ENV['BOOTSTRAP_RESET_DATABASE']) && (bool) $_ENV['BOOTSTRAP_RESET_DATABASE'] === true) {
|
||||
echo 'Re-Installing test database ...' . PHP_EOL;
|
||||
|
||||
|
||||
@@ -1754,31 +1754,6 @@ parameters:
|
||||
count: 1
|
||||
path: Export/Renderer/AbstractRendererTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Export\\\\Renderer\\\\MetaFieldColumnSubscriber\\:\\:loadActivityField\\(\\) has no return type specified\\.$#"
|
||||
count: 1
|
||||
path: Export/Renderer/AbstractRendererTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Export\\\\Renderer\\\\MetaFieldColumnSubscriber\\:\\:loadCustomerField\\(\\) has no return type specified\\.$#"
|
||||
count: 1
|
||||
path: Export/Renderer/AbstractRendererTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Export\\\\Renderer\\\\MetaFieldColumnSubscriber\\:\\:loadProjectField\\(\\) has no return type specified\\.$#"
|
||||
count: 1
|
||||
path: Export/Renderer/AbstractRendererTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Export\\\\Renderer\\\\MetaFieldColumnSubscriber\\:\\:loadTimesheetField\\(\\) has no return type specified\\.$#"
|
||||
count: 1
|
||||
path: Export/Renderer/AbstractRendererTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Export\\\\Renderer\\\\MetaFieldColumnSubscriber\\:\\:prepareEntity\\(\\) has no return type specified\\.$#"
|
||||
count: 1
|
||||
path: Export/Renderer/AbstractRendererTest.php
|
||||
|
||||
-
|
||||
message: "#^Call to an undefined method App\\\\Export\\\\ExportRendererInterface\\|App\\\\Export\\\\TimesheetExportInterface\\:\\:getIcon\\(\\)\\.$#"
|
||||
count: 1
|
||||
@@ -1984,11 +1959,6 @@ parameters:
|
||||
count: 1
|
||||
path: Export/Spreadsheet/Entities/MethodRequiresParams.php
|
||||
|
||||
-
|
||||
message: "#^Cannot call method format\\(\\) on DateTime\\|null\\.$#"
|
||||
count: 1
|
||||
path: Export/Spreadsheet/UserExporterTest.php
|
||||
|
||||
-
|
||||
message: "#^Parameter \\#2 \\$haystack of static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertStringContainsString\\(\\) expects string, string\\|null given\\.$#"
|
||||
count: 1
|
||||
@@ -1999,31 +1969,6 @@ parameters:
|
||||
count: 1
|
||||
path: Export/Timesheet/AbstractRendererTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Export\\\\Timesheet\\\\MetaFieldColumnSubscriber\\:\\:loadActivityField\\(\\) has no return type specified\\.$#"
|
||||
count: 1
|
||||
path: Export/Timesheet/AbstractRendererTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Export\\\\Timesheet\\\\MetaFieldColumnSubscriber\\:\\:loadCustomerField\\(\\) has no return type specified\\.$#"
|
||||
count: 1
|
||||
path: Export/Timesheet/AbstractRendererTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Export\\\\Timesheet\\\\MetaFieldColumnSubscriber\\:\\:loadProjectField\\(\\) has no return type specified\\.$#"
|
||||
count: 1
|
||||
path: Export/Timesheet/AbstractRendererTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Export\\\\Timesheet\\\\MetaFieldColumnSubscriber\\:\\:loadTimesheetField\\(\\) has no return type specified\\.$#"
|
||||
count: 1
|
||||
path: Export/Timesheet/AbstractRendererTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Export\\\\Timesheet\\\\MetaFieldColumnSubscriber\\:\\:prepareEntity\\(\\) has no return type specified\\.$#"
|
||||
count: 1
|
||||
path: Export/Timesheet/AbstractRendererTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Export\\\\Timesheet\\\\CsvRendererTest\\:\\:getTestModel\\(\\) has no return type specified\\.$#"
|
||||
count: 1
|
||||
|
||||
Reference in New Issue
Block a user