From 99fa55d046c1d5b197933d6aee7e9204e6f9fc0c Mon Sep 17 00:00:00 2001 From: Nicolas Joubert Date: Thu, 22 Oct 2026 14:17:47 +0200 Subject: [PATCH] #186 - Type the process manager and the process configuration registry on their process-bundle interfaces Co-Authored-By: Claude Opus 5.5 (1M context) --- CHANGELOG.md | 3 +++ src/Controller/ProcessExecuteController.php | 4 ++-- src/Form/Type/LaunchType.php | 4 ++-- src/Manager/ProcessConfigurationsManager.php | 4 ++-- src/Message/ProcessExecuteHandler.php | 4 ++-- src/Validator/IsValidProcessCodeValidator.php | 4 ++-- tests/Entity/ProcessScheduleTest.php | 4 ++-- tests/Http/Model/HttpProcessExecutionTest.php | 6 +++--- tests/Message/ProcessExecuteHandlerTest.php | 4 ++-- tests/Twig/Runtime/ProcessExecutionExtensionRuntimeTest.php | 4 ++-- tests/Twig/Runtime/ProcessExtensionRuntimeTest.php | 4 ++-- tests/Validator/IsValidProcessCodeValidatorTest.php | 4 ++-- 12 files changed, 26 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f327776..614eb77 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ Latest ------ +## Changes +* [#186](https://github.com/cleverage/ui-process-bundle/issues/186) `ProcessExecuteController`, `ProcessExecuteHandler`, `LaunchType`, `ProcessConfigurationsManager` and `IsValidProcessCodeValidator` are typed on `ProcessManagerInterface` / `ProcessConfigurationRegistryInterface` (process-bundle 5.4) instead of the concrete classes, `@final since 5.4`: the process manager and the process configuration registry can be decorated or replaced for the UI. + v3.3.1 ------ diff --git a/src/Controller/ProcessExecuteController.php b/src/Controller/ProcessExecuteController.php index a1714b9..4af83ff 100644 --- a/src/Controller/ProcessExecuteController.php +++ b/src/Controller/ProcessExecuteController.php @@ -13,7 +13,7 @@ namespace CleverAge\UiProcessBundle\Controller; -use CleverAge\ProcessBundle\Manager\ProcessManager; +use CleverAge\ProcessBundle\Manager\ProcessManagerInterface; use CleverAge\UiProcessBundle\Entity\ProcessExecution; use CleverAge\UiProcessBundle\Http\Model\HttpProcessExecution; use CleverAge\UiProcessBundle\Manager\ProcessExecutionManager; @@ -38,7 +38,7 @@ class ProcessExecuteController extends AbstractController public function __construct( private readonly ValidatorInterface $validator, private readonly MessageBusInterface $bus, - private readonly ProcessManager $processManager, + private readonly ProcessManagerInterface $processManager, private readonly ProcessExecutionManager $processExecutionManager, ) { } diff --git a/src/Form/Type/LaunchType.php b/src/Form/Type/LaunchType.php index 881a277..051ceb1 100644 --- a/src/Form/Type/LaunchType.php +++ b/src/Form/Type/LaunchType.php @@ -14,7 +14,7 @@ namespace CleverAge\UiProcessBundle\Form\Type; use CleverAge\ProcessBundle\Configuration\TaskConfiguration; -use CleverAge\ProcessBundle\Registry\ProcessConfigurationRegistry; +use CleverAge\ProcessBundle\Registry\ProcessConfigurationRegistryInterface; use CleverAge\UiProcessBundle\Manager\ProcessConfigurationsManager; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\CallbackTransformer; @@ -32,7 +32,7 @@ class LaunchType extends AbstractType { public function __construct( - private readonly ProcessConfigurationRegistry $registry, + private readonly ProcessConfigurationRegistryInterface $registry, private readonly ProcessConfigurationsManager $configurationsManager, ) { } diff --git a/src/Manager/ProcessConfigurationsManager.php b/src/Manager/ProcessConfigurationsManager.php index d2e36d8..fec017c 100644 --- a/src/Manager/ProcessConfigurationsManager.php +++ b/src/Manager/ProcessConfigurationsManager.php @@ -14,7 +14,7 @@ namespace CleverAge\UiProcessBundle\Manager; use CleverAge\ProcessBundle\Configuration\ProcessConfiguration; -use CleverAge\ProcessBundle\Registry\ProcessConfigurationRegistry; +use CleverAge\ProcessBundle\Registry\ProcessConfigurationRegistryInterface; use CleverAge\ProcessBundle\Validator\ConstraintLoader; use CleverAge\UiProcessBundle\Notifier\NotificationTrigger; use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; @@ -45,7 +45,7 @@ */ final readonly class ProcessConfigurationsManager { - public function __construct(private ProcessConfigurationRegistry $registry) + public function __construct(private ProcessConfigurationRegistryInterface $registry) { } diff --git a/src/Message/ProcessExecuteHandler.php b/src/Message/ProcessExecuteHandler.php index a1521f9..a1896d3 100644 --- a/src/Message/ProcessExecuteHandler.php +++ b/src/Message/ProcessExecuteHandler.php @@ -13,7 +13,7 @@ namespace CleverAge\UiProcessBundle\Message; -use CleverAge\ProcessBundle\Manager\ProcessManager; +use CleverAge\ProcessBundle\Manager\ProcessManagerInterface; use CleverAge\UiProcessBundle\Monolog\Handler\ProcessHandler; use Symfony\Component\Messenger\Attribute\AsMessageHandler; @@ -23,7 +23,7 @@ #[AsMessageHandler] readonly class ProcessExecuteHandler { - public function __construct(private ProcessManager $manager, private ProcessHandler $processHandler) + public function __construct(private ProcessManagerInterface $manager, private ProcessHandler $processHandler) { } diff --git a/src/Validator/IsValidProcessCodeValidator.php b/src/Validator/IsValidProcessCodeValidator.php index 7c7f055..8969c79 100644 --- a/src/Validator/IsValidProcessCodeValidator.php +++ b/src/Validator/IsValidProcessCodeValidator.php @@ -13,13 +13,13 @@ namespace CleverAge\UiProcessBundle\Validator; -use CleverAge\ProcessBundle\Registry\ProcessConfigurationRegistry; +use CleverAge\ProcessBundle\Registry\ProcessConfigurationRegistryInterface; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; final class IsValidProcessCodeValidator extends ConstraintValidator { - public function __construct(private readonly ProcessConfigurationRegistry $registry) + public function __construct(private readonly ProcessConfigurationRegistryInterface $registry) { } diff --git a/tests/Entity/ProcessScheduleTest.php b/tests/Entity/ProcessScheduleTest.php index ce1d8f8..9ed7867 100644 --- a/tests/Entity/ProcessScheduleTest.php +++ b/tests/Entity/ProcessScheduleTest.php @@ -14,7 +14,7 @@ namespace CleverAge\UiProcessBundle\Tests\Entity; use CleverAge\ProcessBundle\Configuration\ProcessConfiguration; -use CleverAge\ProcessBundle\Registry\ProcessConfigurationRegistry; +use CleverAge\ProcessBundle\Registry\ProcessConfigurationRegistryInterface; use CleverAge\UiProcessBundle\Entity\Enum\ProcessScheduleType; use CleverAge\UiProcessBundle\Entity\ProcessSchedule; use CleverAge\UiProcessBundle\Validator\CronExpression; @@ -93,7 +93,7 @@ public function testValidation(string $process, ProcessScheduleType $type, strin ->setType($type) ->setExpression($expression); - $registry = $this->createStub(ProcessConfigurationRegistry::class); + $registry = $this->createStub(ProcessConfigurationRegistryInterface::class); $registry->method('hasProcessConfiguration') ->willReturnCallback(static fn (string $code): bool => 'demo.process' === $code); $registry->method('getProcessConfiguration')->willReturn(new ProcessConfiguration('demo.process', [])); diff --git a/tests/Http/Model/HttpProcessExecutionTest.php b/tests/Http/Model/HttpProcessExecutionTest.php index 12377bc..57a353d 100644 --- a/tests/Http/Model/HttpProcessExecutionTest.php +++ b/tests/Http/Model/HttpProcessExecutionTest.php @@ -14,7 +14,7 @@ namespace CleverAge\UiProcessBundle\Tests\Http\Model; use CleverAge\ProcessBundle\Configuration\ProcessConfiguration; -use CleverAge\ProcessBundle\Registry\ProcessConfigurationRegistry; +use CleverAge\ProcessBundle\Registry\ProcessConfigurationRegistryInterface; use CleverAge\UiProcessBundle\Http\Model\HttpProcessExecution; use CleverAge\UiProcessBundle\Validator\IsValidProcessCode; use CleverAge\UiProcessBundle\Validator\IsValidProcessCodeValidator; @@ -58,7 +58,7 @@ public function testConstruct(): void #[DataProvider('provideValidation')] public function testValidation(?string $code, string|array $context, array $expectedViolations): void { - $registry = $this->createStub(ProcessConfigurationRegistry::class); + $registry = $this->createStub(ProcessConfigurationRegistryInterface::class); $registry->method('hasProcessConfiguration') ->willReturnCallback(static fn (string $code): bool => 'demo.process' === $code); $registry->method('getProcessConfiguration')->willReturn(new ProcessConfiguration('demo.process', [])); @@ -98,7 +98,7 @@ public static function provideValidation(): iterable public function testInvalidJsonContext(): void { - $registry = $this->createStub(ProcessConfigurationRegistry::class); + $registry = $this->createStub(ProcessConfigurationRegistryInterface::class); $registry->method('hasProcessConfiguration')->willReturn(true); $registry->method('getProcessConfiguration')->willReturn(new ProcessConfiguration('demo.process', [])); $validator = Validation::createValidatorBuilder() diff --git a/tests/Message/ProcessExecuteHandlerTest.php b/tests/Message/ProcessExecuteHandlerTest.php index bc849b3..cfebd6e 100644 --- a/tests/Message/ProcessExecuteHandlerTest.php +++ b/tests/Message/ProcessExecuteHandlerTest.php @@ -13,7 +13,7 @@ namespace CleverAge\UiProcessBundle\Tests\Message; -use CleverAge\ProcessBundle\Manager\ProcessManager; +use CleverAge\ProcessBundle\Manager\ProcessManagerInterface; use CleverAge\UiProcessBundle\Manager\ProcessExecutionManager; use CleverAge\UiProcessBundle\Message\ProcessExecuteHandler; use CleverAge\UiProcessBundle\Message\ProcessExecuteMessage; @@ -33,7 +33,7 @@ public function testExecuteTheProcessWithANewLogFile(): void // Log file of a previous execution, in the same worker $processHandler->setFilename('previous.log'); - $manager = $this->createMock(ProcessManager::class); + $manager = $this->createMock(ProcessManagerInterface::class); $manager->expects(self::once()) ->method('execute') ->with('test.process', 'data.csv', ['foo' => 'bar']) diff --git a/tests/Twig/Runtime/ProcessExecutionExtensionRuntimeTest.php b/tests/Twig/Runtime/ProcessExecutionExtensionRuntimeTest.php index c224863..e02b880 100644 --- a/tests/Twig/Runtime/ProcessExecutionExtensionRuntimeTest.php +++ b/tests/Twig/Runtime/ProcessExecutionExtensionRuntimeTest.php @@ -14,7 +14,7 @@ namespace CleverAge\UiProcessBundle\Tests\Twig\Runtime; use CleverAge\ProcessBundle\Configuration\ProcessConfiguration; -use CleverAge\ProcessBundle\Registry\ProcessConfigurationRegistry; +use CleverAge\ProcessBundle\Registry\ProcessConfigurationRegistryInterface; use CleverAge\UiProcessBundle\Entity\ProcessExecution; use CleverAge\UiProcessBundle\Manager\ProcessConfigurationsManager; use CleverAge\UiProcessBundle\Repository\ProcessExecutionRepository; @@ -63,7 +63,7 @@ private function createManager(): ProcessConfigurationsManager 'demo.with_ui' => new ProcessConfiguration('demo.with_ui', [], ['ui' => ['source' => 'Pim', 'target' => 'Shop']]), 'demo.without_ui' => new ProcessConfiguration('demo.without_ui', []), ]; - $registry = $this->createStub(ProcessConfigurationRegistry::class); + $registry = $this->createStub(ProcessConfigurationRegistryInterface::class); $registry->method('hasProcessConfiguration') ->willReturnCallback(static fn (string $code): bool => isset($configurations[$code])); $registry->method('getProcessConfiguration') diff --git a/tests/Twig/Runtime/ProcessExtensionRuntimeTest.php b/tests/Twig/Runtime/ProcessExtensionRuntimeTest.php index 54bd187..fc9050b 100644 --- a/tests/Twig/Runtime/ProcessExtensionRuntimeTest.php +++ b/tests/Twig/Runtime/ProcessExtensionRuntimeTest.php @@ -14,7 +14,7 @@ namespace CleverAge\UiProcessBundle\Tests\Twig\Runtime; use CleverAge\ProcessBundle\Configuration\ProcessConfiguration; -use CleverAge\ProcessBundle\Registry\ProcessConfigurationRegistry; +use CleverAge\ProcessBundle\Registry\ProcessConfigurationRegistryInterface; use CleverAge\UiProcessBundle\Manager\ProcessConfigurationsManager; use CleverAge\UiProcessBundle\Twig\Runtime\ProcessExtensionRuntime; use PHPUnit\Framework\Attributes\CoversClass; @@ -28,7 +28,7 @@ class ProcessExtensionRuntimeTest extends TestCase public function testGetUiOptions(): void { $configuration = new ProcessConfiguration('demo.process', [], ['ui' => ['source' => 'Pim', 'entrypoint_type' => 'file']]); - $registry = $this->createStub(ProcessConfigurationRegistry::class); + $registry = $this->createStub(ProcessConfigurationRegistryInterface::class); $registry->method('hasProcessConfiguration') ->willReturnCallback(static fn (string $code): bool => 'demo.process' === $code); $registry->method('getProcessConfiguration')->willReturn($configuration); diff --git a/tests/Validator/IsValidProcessCodeValidatorTest.php b/tests/Validator/IsValidProcessCodeValidatorTest.php index a0eaca6..21cfd89 100644 --- a/tests/Validator/IsValidProcessCodeValidatorTest.php +++ b/tests/Validator/IsValidProcessCodeValidatorTest.php @@ -14,7 +14,7 @@ namespace CleverAge\UiProcessBundle\Tests\Validator; use CleverAge\ProcessBundle\Configuration\ProcessConfiguration; -use CleverAge\ProcessBundle\Registry\ProcessConfigurationRegistry; +use CleverAge\ProcessBundle\Registry\ProcessConfigurationRegistryInterface; use CleverAge\UiProcessBundle\Validator\IsValidProcessCode; use CleverAge\UiProcessBundle\Validator\IsValidProcessCodeValidator; use PHPUnit\Framework\Attributes\CoversClass; @@ -33,7 +33,7 @@ protected function createValidator(): IsValidProcessCodeValidator 'demo.public' => new ProcessConfiguration('demo.public', []), 'demo.private' => new ProcessConfiguration('demo.private', [], public: false), ]; - $registry = $this->createStub(ProcessConfigurationRegistry::class); + $registry = $this->createStub(ProcessConfigurationRegistryInterface::class); $registry->method('hasProcessConfiguration') ->willReturnCallback(static fn (string $code): bool => isset($configurations[$code])); $registry->method('getProcessConfiguration')