Release 2.32 (#5411)

* bump packages
* dynamic invoice options
* make sure that invoice previews can be detected
* support for mpdf associated files
* do not include any future times in work contract calculation
* re-add username column in Excel spreadsheet
* deactivate internal rate editing
* show if plugin update exists
* shorten name to Kimai only, without Time-Tracking
* remove check for existing id in work contract
* fix metafield already defined in search
* helper methods to unlock months
* new translation
* send event on unlock month
This commit is contained in:
Kevin Papst
2025-04-06 09:53:48 +02:00
committed by GitHub
parent 2a75cd6230
commit 2e6b700b43
58 changed files with 749 additions and 437 deletions

View File

@@ -22,7 +22,7 @@ abstract class AbstractActionsSubscriberTestCase extends TestCase
protected function createSubscriber(string $className, ...$grants): AbstractActionsSubscriber
{
$auth = $this->createMock(AuthorizationCheckerInterface::class);
$auth->method('isGranted')->willReturnOnConsecutiveCalls(...$grants);
$auth->method('isGranted')->willReturnOnConsecutiveCalls(...$grants); // @phpstan-ignore argument.named
$router = $this->createMock(UrlGeneratorInterface::class);
$router->method('generate')->willReturnArgument(0);

View File

@@ -27,6 +27,7 @@ class EmailSubscriberTest extends TestCase
$events = EmailSubscriber::getSubscribedEvents();
self::assertArrayHasKey(EmailEvent::class, $events);
$methodName = $events[EmailEvent::class][0];
self::assertIsString($methodName);
self::assertTrue(method_exists(EmailSubscriber::class, $methodName));
}

View File

@@ -31,10 +31,12 @@ class LastLoginSubscriberTest extends TestCase
self::assertArrayHasKey(UserInteractiveLoginEvent::class, $events);
$methodName = $events[UserInteractiveLoginEvent::class];
self::assertIsString($methodName);
self::assertTrue(method_exists(LastLoginSubscriber::class, $methodName));
self::assertArrayHasKey(LoginSuccessEvent::class, $events);
$methodName = $events[LoginSuccessEvent::class];
self::assertIsString($methodName);
self::assertTrue(method_exists(LastLoginSubscriber::class, $methodName));
}

View File

@@ -23,6 +23,7 @@ class MenuSubscriberTest extends TestCase
$events = MenuSubscriber::getSubscribedEvents();
self::assertArrayHasKey(ConfigureMainMenuEvent::class, $events);
$methodName = $events[ConfigureMainMenuEvent::class][0];
self::assertIsString($methodName);
self::assertTrue(method_exists(MenuSubscriber::class, $methodName));
}
}

View File

@@ -29,6 +29,7 @@ class PagerfantaExceptionSubscriberTest extends TestCase
$events = PagerfantaExceptionSubscriber::getSubscribedEvents();
self::assertArrayHasKey(KernelEvents::EXCEPTION, $events);
$methodName = $events[KernelEvents::EXCEPTION][0];
self::assertIsString($methodName);
self::assertTrue(method_exists(PagerfantaExceptionSubscriber::class, $methodName));
}

View File

@@ -33,6 +33,7 @@ class ProfileSubscriberTest extends TestCase
self::assertArrayHasKey(LoginSuccessEvent::class, $events);
$methodName = $events[LoginSuccessEvent::class];
self::assertIsString($methodName);
self::assertTrue(method_exists(LastLoginSubscriber::class, $methodName));
}

View File

@@ -23,6 +23,7 @@ class UserDetailsSubscriberTest extends TestCase
$events = UserDetailsSubscriber::getSubscribedEvents();
self::assertArrayHasKey(UserDetailsEvent::class, $events);
$methodName = $events[UserDetailsEvent::class][0];
self::assertIsString($methodName);
self::assertTrue(method_exists(UserDetailsSubscriber::class, $methodName));
}
}

View File

@@ -44,6 +44,7 @@ class UserPreferenceSubscriberTest extends TestCase
$events = UserPreferenceSubscriber::getSubscribedEvents();
self::assertArrayHasKey(PrepareUserEvent::class, $events);
$methodName = $events[PrepareUserEvent::class][0];
self::assertIsString($methodName);
self::assertTrue(method_exists(UserPreferenceSubscriber::class, $methodName));
}

View File

@@ -23,6 +23,7 @@ class WizardSubscriberTest extends TestCase
$events = WizardSubscriber::getSubscribedEvents();
self::assertArrayHasKey(KernelEvents::REQUEST, $events);
$methodName = $events[KernelEvents::REQUEST][0];
self::assertIsString($methodName);
self::assertTrue(method_exists(WizardSubscriber::class, $methodName));
}
}