diff --git a/.github/workflows/rector-cs.yml b/.github/workflows/rector-cs.yml new file mode 100644 index 00000000..03b7c75c --- /dev/null +++ b/.github/workflows/rector-cs.yml @@ -0,0 +1,28 @@ +name: Rector + PHP CS Fixer + +on: + pull_request_target: + paths: + - 'config/**' + - 'src/**' + - 'tests/**' + - '.github/workflows/rector-cs.yml' + - 'composer.json' + - 'rector.php' + - '.php-cs-fixer.dist.php' + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + rector: + uses: yiisoft/actions/.github/workflows/rector-cs.yml@master + secrets: + token: ${{ secrets.YIISOFT_GITHUB_TOKEN }} + with: + repository: ${{ github.event.pull_request.head.repo.full_name }} + php: '8.1' diff --git a/.github/workflows/rector.yml b/.github/workflows/rector.yml deleted file mode 100644 index 5d6931d5..00000000 --- a/.github/workflows/rector.yml +++ /dev/null @@ -1,24 +0,0 @@ -on: - pull_request_target: - paths-ignore: - - 'docs/**' - - 'README.md' - - 'CHANGELOG.md' - - '.gitignore' - - '.gitattributes' - - 'infection.json.dist' - - 'psalm.xml' - -name: rector - -jobs: - rector: - uses: yiisoft/actions/.github/workflows/rector.yml@master - secrets: - token: ${{ secrets.YIISOFT_GITHUB_TOKEN }} - with: - repository: ${{ github.event.pull_request.head.repo.full_name }} - os: >- - ['ubuntu-latest'] - php: >- - ['8.4'] diff --git a/.gitignore b/.gitignore index 9b3a5cd5..8f69c401 100644 --- a/.gitignore +++ b/.gitignore @@ -14,9 +14,10 @@ vendor # composer lock files composer.lock -# PHP CS Fixer -.php_cs.cache - # PHPUnit .phpunit.result.cache coverage.html + +# PHP CS Fixer +/.php-cs-fixer.cache +/.php-cs-fixer.php diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php new file mode 100644 index 00000000..3cb52f9e --- /dev/null +++ b/.php-cs-fixer.dist.php @@ -0,0 +1,22 @@ +in([ + __DIR__ . '/config', + __DIR__ . '/src', + __DIR__ . '/tests', +]); + +return ConfigBuilder::build() + ->setRiskyAllowed(true) + ->setParallelConfig(ParallelConfigFactory::detect()) + ->setRules([ + '@Yiisoft/Core' => true, + '@Yiisoft/Core:risky' => true, + ]) + ->setFinder($finder); diff --git a/.styleci.yml b/.styleci.yml deleted file mode 100644 index 1ab379b4..00000000 --- a/.styleci.yml +++ /dev/null @@ -1,85 +0,0 @@ -preset: psr12 -risky: true - -version: 8.1 - -finder: - exclude: - - docs - - vendor - -enabled: - - alpha_ordered_traits - - array_indentation - - array_push - - combine_consecutive_issets - - combine_consecutive_unsets - - combine_nested_dirname - - declare_strict_types - - dir_constant - - fully_qualified_strict_types - - function_to_constant - - hash_to_slash_comment - - is_null - - logical_operators - - magic_constant_casing - - magic_method_casing - - method_separation - - modernize_types_casting - - native_function_casing - - native_function_type_declaration_casing - - no_alias_functions - - no_empty_comment - - no_empty_phpdoc - - no_empty_statement - - no_extra_block_blank_lines - - no_short_bool_cast - - no_superfluous_elseif - - no_unneeded_control_parentheses - - no_unneeded_curly_braces - - no_unneeded_final_method - - no_unset_cast - - no_unused_imports - - no_unused_lambda_imports - - no_useless_else - - no_useless_return - - normalize_index_brace - - php_unit_dedicate_assert - - php_unit_dedicate_assert_internal_type - - php_unit_expectation - - php_unit_mock - - php_unit_mock_short_will_return - - php_unit_namespaced - - php_unit_no_expectation_annotation - - phpdoc_no_empty_return - - phpdoc_no_useless_inheritdoc - - phpdoc_order - - phpdoc_property - - phpdoc_scalar - - phpdoc_singular_inheritdoc - - phpdoc_trim - - phpdoc_trim_consecutive_blank_line_separation - - phpdoc_type_to_var - - phpdoc_types - - phpdoc_types_order - - print_to_echo - - regular_callable_call - - return_assignment - - self_accessor - - self_static_accessor - - set_type_to_cast - - short_array_syntax - - short_list_syntax - - simplified_if_return - - single_quote - - standardize_not_equals - - ternary_to_null_coalescing - - trailing_comma_in_multiline_array - - unalign_double_arrow - - unalign_equals - - empty_loop_body_braces - - integer_literal_case - - union_type_without_spaces - -disabled: - - function_declaration diff --git a/composer.json b/composer.json index fd3e594f..340e37d9 100644 --- a/composer.json +++ b/composer.json @@ -47,6 +47,7 @@ "yiisoft/injector": "^1.0" }, "require-dev": { + "friendsofphp/php-cs-fixer": "^3.93", "maglnet/composer-require-checker": "^4.7.1", "phpbench/phpbench": "^1.4.1", "phpunit/phpunit": "^10.5.45", @@ -54,6 +55,7 @@ "roave/infection-static-analysis-plugin": "^1.35", "spatie/phpunit-watcher": "^1.24", "vimeo/psalm": "^5.26.1 || ^6.10", + "yiisoft/code-style": "^1.0", "yiisoft/test-support": "^3.0.2", "yiisoft/yii-debug": "dev-master" }, @@ -92,6 +94,7 @@ } }, "scripts": { + "cs-fix": "php-cs-fixer fix", "test": "phpunit --testdox --no-interaction", "test-watch": "phpunit-watcher watch" } diff --git a/config/di.php b/config/di.php index b9b28033..a2fb3c01 100644 --- a/config/di.php +++ b/config/di.php @@ -41,7 +41,7 @@ ], WorkerInterface::class => QueueWorker::class, LoopInterface::class => static function (ContainerInterface $container): LoopInterface { - return extension_loaded('pcntl') + return \extension_loaded('pcntl') ? $container->get(SignalLoop::class) : $container->get(SimpleLoop::class); }, diff --git a/rector.php b/rector.php index dd88e1b4..b5976b4d 100644 --- a/rector.php +++ b/rector.php @@ -6,24 +6,17 @@ use Rector\Config\RectorConfig; use Rector\Php74\Rector\Closure\ClosureToArrowFunctionRector; use Rector\Php81\Rector\Property\ReadOnlyPropertyRector; -use Rector\Set\ValueObject\LevelSetList; -return static function (RectorConfig $rectorConfig): void { - $rectorConfig->paths([ +return RectorConfig::configure() + ->withPaths([ __DIR__ . '/src', __DIR__ . '/tests', - ]); - - // register a single rule - $rectorConfig->rule(InlineConstructorDefaultToPropertyRector::class); - - // define sets of rules - $rectorConfig->sets([ - LevelSetList::UP_TO_PHP_81, - ]); - - $rectorConfig->skip([ + ]) + ->withPhpSets(php81: true) + ->withRules([ + InlineConstructorDefaultToPropertyRector::class, + ]) + ->withSkip([ ClosureToArrowFunctionRector::class, ReadOnlyPropertyRector::class, ]); -}; diff --git a/src/Adapter/SynchronousAdapter.php b/src/Adapter/SynchronousAdapter.php index c92e95a8..5c8f7743 100644 --- a/src/Adapter/SynchronousAdapter.php +++ b/src/Adapter/SynchronousAdapter.php @@ -14,6 +14,8 @@ use Yiisoft\Queue\Worker\WorkerInterface; use Yiisoft\Queue\Message\IdEnvelope; +use function count; + final class SynchronousAdapter implements AdapterInterface { private array $messages = []; diff --git a/src/Cli/SignalLoop.php b/src/Cli/SignalLoop.php index 2043a597..2d23d6f5 100644 --- a/src/Cli/SignalLoop.php +++ b/src/Cli/SignalLoop.php @@ -4,6 +4,12 @@ namespace Yiisoft\Queue\Cli; +use const SIGCONT; +use const SIGHUP; +use const SIGINT; +use const SIGTERM; +use const SIGTSTP; + final class SignalLoop implements LoopInterface { use SoftLimitTrait; @@ -33,13 +39,13 @@ final class SignalLoop implements LoopInterface public function __construct(protected int $memorySoftLimit = 0) { foreach (self::SIGNALS_EXIT as $signal) { - pcntl_signal($signal, fn () => $this->exit = true); + pcntl_signal($signal, fn() => $this->exit = true); } foreach (self::SIGNALS_SUSPEND as $signal) { - pcntl_signal($signal, fn () => $this->pause = true); + pcntl_signal($signal, fn() => $this->pause = true); } foreach (self::SIGNALS_RESUME as $signal) { - pcntl_signal($signal, fn () => $this->pause = false); + pcntl_signal($signal, fn() => $this->pause = false); } } diff --git a/src/Cli/SimpleLoop.php b/src/Cli/SimpleLoop.php index 2c34ad05..fca01653 100644 --- a/src/Cli/SimpleLoop.php +++ b/src/Cli/SimpleLoop.php @@ -12,9 +12,7 @@ final class SimpleLoop implements LoopInterface * @param int $memorySoftLimit Soft RAM limit in bytes. The loop won't let you continue to execute the program if * soft limit is reached. Zero means no limit. */ - public function __construct(protected int $memorySoftLimit = 0) - { - } + public function __construct(protected int $memorySoftLimit = 0) {} public function canContinue(): bool { diff --git a/src/Command/ListenAllCommand.php b/src/Command/ListenAllCommand.php index 9703ee59..8d61a4b6 100644 --- a/src/Command/ListenAllCommand.php +++ b/src/Command/ListenAllCommand.php @@ -18,7 +18,7 @@ 'Listens the all the given queues and executes messages as they come. ' . 'Meant to be used in development environment only. ' . 'Listens all configured queues by default in case you\'re using yiisoft/config. ' - . 'Needs to be stopped manually.' + . 'Needs to be stopped manually.', )] final class ListenAllCommand extends Command { @@ -52,8 +52,8 @@ public function configure(): void 'maximum', 'm', InputOption::VALUE_REQUIRED, - 'Maximum number of messages to process in each channel before switching to another channel. ' . - 'Default is 0 (no limits).', + 'Maximum number of messages to process in each channel before switching to another channel. ' + . 'Default is 0 (no limits).', 0, ); diff --git a/src/Command/ListenCommand.php b/src/Command/ListenCommand.php index a025b8fd..7b2859dc 100644 --- a/src/Command/ListenCommand.php +++ b/src/Command/ListenCommand.php @@ -13,12 +13,12 @@ #[AsCommand( 'queue:listen', - 'Listens the queue and executes messages as they come. Needs to be stopped manually.' + 'Listens the queue and executes messages as they come. Needs to be stopped manually.', )] final class ListenCommand extends Command { public function __construct( - private readonly QueueProviderInterface $queueProvider + private readonly QueueProviderInterface $queueProvider, ) { parent::__construct(); } diff --git a/src/Command/RunCommand.php b/src/Command/RunCommand.php index 65a450b8..377a5dc0 100644 --- a/src/Command/RunCommand.php +++ b/src/Command/RunCommand.php @@ -14,7 +14,7 @@ #[AsCommand( 'queue:run', - 'Runs all the existing messages in the given queues. Exits once messages are over.' + 'Runs all the existing messages in the given queues. Exits once messages are over.', )] final class RunCommand extends Command { @@ -50,7 +50,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int $output->write("Processing channel $channel... "); $count = $this->queueProvider ->get($channel) - ->run((int)$input->getOption('maximum')); + ->run((int) $input->getOption('maximum')); $output->writeln("Messages processed: $count."); } diff --git a/src/Debug/QueueCollector.php b/src/Debug/QueueCollector.php index acf88cfb..d0950178 100644 --- a/src/Debug/QueueCollector.php +++ b/src/Debug/QueueCollector.php @@ -11,6 +11,8 @@ use Yiisoft\Queue\Middleware\Push\MiddlewarePushInterface; use Yiisoft\Queue\QueueInterface; +use function count; + final class QueueCollector implements SummaryCollectorInterface { use CollectorTrait; @@ -70,22 +72,15 @@ public function collectWorkerProcessing(MessageInterface $message, QueueInterfac $this->processingMessages[$queue->getChannel()][] = $message; } - private function reset(): void - { - $this->pushes = []; - $this->statuses = []; - $this->processingMessages = []; - } - public function getSummary(): array { if (!$this->isActive()) { return []; } - $countPushes = array_sum(array_map(static fn ($messages) => is_countable($messages) ? count($messages) : 0, $this->pushes)); + $countPushes = array_sum(array_map(static fn($messages) => is_countable($messages) ? count($messages) : 0, $this->pushes)); $countStatuses = count($this->statuses); - $countProcessingMessages = array_sum(array_map(static fn ($messages) => is_countable($messages) ? count($messages) : 0, $this->processingMessages)); + $countProcessingMessages = array_sum(array_map(static fn($messages) => is_countable($messages) ? count($messages) : 0, $this->processingMessages)); return [ 'countPushes' => $countPushes, @@ -93,4 +88,11 @@ public function getSummary(): array 'countProcessingMessages' => $countProcessingMessages, ]; } + + private function reset(): void + { + $this->pushes = []; + $this->statuses = []; + $this->processingMessages = []; + } } diff --git a/src/Debug/QueueDecorator.php b/src/Debug/QueueDecorator.php index 0c4294e6..5e177250 100644 --- a/src/Debug/QueueDecorator.php +++ b/src/Debug/QueueDecorator.php @@ -15,8 +15,7 @@ final class QueueDecorator implements QueueInterface public function __construct( private readonly QueueInterface $queue, private readonly QueueCollector $collector, - ) { - } + ) {} public function status(string|int $id): JobStatus { @@ -28,7 +27,7 @@ public function status(string|int $id): JobStatus public function push( MessageInterface $message, - string|array|callable|MiddlewarePushInterface ...$middlewareDefinitions + string|array|callable|MiddlewarePushInterface ...$middlewareDefinitions, ): MessageInterface { $message = $this->queue->push($message, ...$middlewareDefinitions); $this->collector->collectPush($this->queue->getChannel(), $message, ...$middlewareDefinitions); diff --git a/src/Debug/QueueProviderInterfaceProxy.php b/src/Debug/QueueProviderInterfaceProxy.php index 22ce1307..a1ec5e6e 100644 --- a/src/Debug/QueueProviderInterfaceProxy.php +++ b/src/Debug/QueueProviderInterfaceProxy.php @@ -13,8 +13,7 @@ final class QueueProviderInterfaceProxy implements QueueProviderInterface public function __construct( private readonly QueueProviderInterface $queueProvider, private readonly QueueCollector $collector, - ) { - } + ) {} public function get(string|BackedEnum $channel): QueueInterface { diff --git a/src/Debug/QueueWorkerInterfaceProxy.php b/src/Debug/QueueWorkerInterfaceProxy.php index 574ba2cd..ae8ee9b1 100644 --- a/src/Debug/QueueWorkerInterfaceProxy.php +++ b/src/Debug/QueueWorkerInterfaceProxy.php @@ -13,8 +13,7 @@ final class QueueWorkerInterfaceProxy implements WorkerInterface public function __construct( private readonly WorkerInterface $worker, private readonly QueueCollector $collector, - ) { - } + ) {} public function process(MessageInterface $message, QueueInterface $queue): MessageInterface { diff --git a/src/Exception/JobFailureException.php b/src/Exception/JobFailureException.php index cb167759..a5a25956 100644 --- a/src/Exception/JobFailureException.php +++ b/src/Exception/JobFailureException.php @@ -13,7 +13,7 @@ final class JobFailureException extends RuntimeException { public function __construct( private readonly MessageInterface $queueMessage, - Throwable $previous + Throwable $previous, ) { $error = $previous->getMessage(); $messageId = $queueMessage->getMetadata()[IdEnvelope::MESSAGE_ID_KEY] ?? 'null'; diff --git a/src/Message/Envelope.php b/src/Message/Envelope.php index a39668d6..633593e2 100644 --- a/src/Message/Envelope.php +++ b/src/Message/Envelope.php @@ -4,13 +4,13 @@ namespace Yiisoft\Queue\Message; +use function is_array; + abstract class Envelope implements EnvelopeInterface { private ?array $metadata = null; - public function __construct(protected MessageInterface $message) - { - } + public function __construct(protected MessageInterface $message) {} /** @psalm-suppress MoreSpecificReturnType */ public static function fromData(string $handlerName, mixed $data, array $metadata = []): static diff --git a/src/Message/IdEnvelope.php b/src/Message/IdEnvelope.php index 8033a988..0fb00e9d 100644 --- a/src/Message/IdEnvelope.php +++ b/src/Message/IdEnvelope.php @@ -4,6 +4,10 @@ namespace Yiisoft\Queue\Message; +use function is_int; +use function is_object; +use function is_string; + /** * ID envelope allows to identify a message. */ @@ -14,8 +18,7 @@ final class IdEnvelope extends Envelope public function __construct( protected MessageInterface $message, private readonly string|int|null $id, - ) { - } + ) {} public static function fromMessage(MessageInterface $message): static { @@ -27,7 +30,7 @@ public static function fromMessage(MessageInterface $message): static $rawId === null => null, // don't remove this branch: it's important for compute speed is_string($rawId) => $rawId, is_int($rawId) => $rawId, - is_object($rawId) && method_exists($rawId, '__toString') => (string)$rawId, + is_object($rawId) && method_exists($rawId, '__toString') => (string) $rawId, default => null, }; diff --git a/src/Message/JsonMessageSerializer.php b/src/Message/JsonMessageSerializer.php index d9b3a92e..67eadbb9 100644 --- a/src/Message/JsonMessageSerializer.php +++ b/src/Message/JsonMessageSerializer.php @@ -7,6 +7,11 @@ use InvalidArgumentException; use JsonException; +use function is_array; +use function is_string; + +use const JSON_THROW_ON_ERROR; + final class JsonMessageSerializer implements MessageSerializerInterface { /** diff --git a/src/Message/Message.php b/src/Message/Message.php index fda3f1a6..4613a730 100644 --- a/src/Message/Message.php +++ b/src/Message/Message.php @@ -15,8 +15,7 @@ public function __construct( private readonly string $handlerName, private readonly mixed $data, private array $metadata = [], - ) { - } + ) {} public static function fromData(string $handlerName, mixed $data, array $metadata = []): MessageInterface { diff --git a/src/Middleware/CallableFactory.php b/src/Middleware/CallableFactory.php index 09c41aa3..ae253726 100644 --- a/src/Middleware/CallableFactory.php +++ b/src/Middleware/CallableFactory.php @@ -20,9 +20,8 @@ final class CallableFactory { public function __construct( - private readonly ContainerInterface $container - ) { - } + private readonly ContainerInterface $container, + ) {} /** * Create a real callable listener from definition. diff --git a/src/Middleware/Consume/ConsumeFinalHandler.php b/src/Middleware/Consume/ConsumeFinalHandler.php index fd514310..53dca588 100644 --- a/src/Middleware/Consume/ConsumeFinalHandler.php +++ b/src/Middleware/Consume/ConsumeFinalHandler.php @@ -12,9 +12,8 @@ final class ConsumeFinalHandler implements MessageHandlerConsumeInterface { public function __construct( - private readonly Closure $handler - ) { - } + private readonly Closure $handler, + ) {} public function handleConsume(ConsumeRequest $request): ConsumeRequest { diff --git a/src/Middleware/Consume/ConsumeMiddlewareDispatcher.php b/src/Middleware/Consume/ConsumeMiddlewareDispatcher.php index feef5529..a2a62130 100644 --- a/src/Middleware/Consume/ConsumeMiddlewareDispatcher.php +++ b/src/Middleware/Consume/ConsumeMiddlewareDispatcher.php @@ -6,6 +6,8 @@ use Closure; +use function array_key_exists; + final class ConsumeMiddlewareDispatcher { /** @@ -35,7 +37,7 @@ public function __construct( */ public function dispatch( ConsumeRequest $request, - MessageHandlerConsumeInterface $finishHandler + MessageHandlerConsumeInterface $finishHandler, ): ConsumeRequest { $handlerName = $request->getMessage()->getHandlerName(); if (!array_key_exists($handlerName, $this->stack)) { @@ -91,8 +93,8 @@ private function buildMiddlewares(): array $factory = $this->middlewareFactory; foreach ($this->middlewareDefinitions as $middlewareDefinition) { - $middlewares[] = static fn (): MiddlewareConsumeInterface => $factory->createConsumeMiddleware( - $middlewareDefinition + $middlewares[] = static fn(): MiddlewareConsumeInterface => $factory->createConsumeMiddleware( + $middlewareDefinition, ); } diff --git a/src/Middleware/Consume/ConsumeRequest.php b/src/Middleware/Consume/ConsumeRequest.php index 489c7d5a..af0d5f08 100644 --- a/src/Middleware/Consume/ConsumeRequest.php +++ b/src/Middleware/Consume/ConsumeRequest.php @@ -9,9 +9,7 @@ final class ConsumeRequest { - public function __construct(private MessageInterface $message, private QueueInterface $queue) - { - } + public function __construct(private MessageInterface $message, private QueueInterface $queue) {} public function getMessage(): MessageInterface { diff --git a/src/Middleware/Consume/MiddlewareConsumeStack.php b/src/Middleware/Consume/MiddlewareConsumeStack.php index 73ce91a6..22029d78 100644 --- a/src/Middleware/Consume/MiddlewareConsumeStack.php +++ b/src/Middleware/Consume/MiddlewareConsumeStack.php @@ -24,8 +24,7 @@ final class MiddlewareConsumeStack implements MessageHandlerConsumeInterface public function __construct( private readonly array $middlewares, private readonly MessageHandlerConsumeInterface $finishHandler, - ) { - } + ) {} public function handleConsume(ConsumeRequest $request): ConsumeRequest { @@ -59,8 +58,7 @@ private function wrap(Closure $middlewareFactory, MessageHandlerConsumeInterface public function __construct( private readonly Closure $middlewareFactory, private readonly MessageHandlerConsumeInterface $handler, - ) { - } + ) {} public function handleConsume(ConsumeRequest $request): ConsumeRequest { diff --git a/src/Middleware/Consume/MiddlewareFactoryConsume.php b/src/Middleware/Consume/MiddlewareFactoryConsume.php index 7b916be4..d8a5b742 100644 --- a/src/Middleware/Consume/MiddlewareFactoryConsume.php +++ b/src/Middleware/Consume/MiddlewareFactoryConsume.php @@ -15,6 +15,7 @@ use Yiisoft\Queue\Middleware\InvalidMiddlewareDefinitionException; use function is_string; +use function is_array; /** * Creates a middleware based on the definition provided. @@ -27,8 +28,7 @@ final class MiddlewareFactoryConsume implements MiddlewareFactoryConsumeInterfac public function __construct( private readonly ContainerInterface $container, private readonly CallableFactory $callableFactory, - ) { - } + ) {} /** * @param array|callable|MiddlewareConsumeInterface|string $middlewareDefinition Middleware definition in one of @@ -52,7 +52,7 @@ public function __construct( * @return MiddlewareConsumeInterface */ public function createConsumeMiddleware( - MiddlewareConsumeInterface|callable|array|string $middlewareDefinition + MiddlewareConsumeInterface|callable|array|string $middlewareDefinition, ): MiddlewareConsumeInterface { if ($middlewareDefinition instanceof MiddlewareConsumeInterface) { return $middlewareDefinition; @@ -91,7 +91,7 @@ private function wrapCallable(callable $callback): MiddlewareConsumeInterface public function __construct( callable $callback, - private readonly ContainerInterface $container + private readonly ContainerInterface $container, ) { $this->callback = $callback; } @@ -113,7 +113,7 @@ public function processConsume(ConsumeRequest $request, MessageHandlerConsumeInt } private function tryGetFromCallable( - callable|MiddlewareConsumeInterface|array|string $definition + callable|MiddlewareConsumeInterface|array|string $definition, ): ?MiddlewareConsumeInterface { if ($definition instanceof Closure) { return $this->wrapCallable($definition); @@ -134,7 +134,7 @@ private function tryGetFromCallable( } private function tryGetFromArrayDefinition( - callable|MiddlewareConsumeInterface|array|string $definition + callable|MiddlewareConsumeInterface|array|string $definition, ): ?MiddlewareConsumeInterface { if (!is_array($definition)) { return null; diff --git a/src/Middleware/FailureHandling/FailureEnvelope.php b/src/Middleware/FailureHandling/FailureEnvelope.php index 4d795588..05e38870 100644 --- a/src/Middleware/FailureHandling/FailureEnvelope.php +++ b/src/Middleware/FailureHandling/FailureEnvelope.php @@ -15,8 +15,7 @@ final class FailureEnvelope extends Envelope public function __construct( protected MessageInterface $message, private readonly array $metadata = [], - ) { - } + ) {} public static function fromMessage(MessageInterface $message): static { diff --git a/src/Middleware/FailureHandling/FailureHandlingRequest.php b/src/Middleware/FailureHandling/FailureHandlingRequest.php index 43de7433..fb37eac3 100644 --- a/src/Middleware/FailureHandling/FailureHandlingRequest.php +++ b/src/Middleware/FailureHandling/FailureHandlingRequest.php @@ -10,9 +10,7 @@ final class FailureHandlingRequest { - public function __construct(private MessageInterface $message, private Throwable $exception, private QueueInterface $queue) - { - } + public function __construct(private MessageInterface $message, private Throwable $exception, private QueueInterface $queue) {} /** * @return MessageInterface diff --git a/src/Middleware/FailureHandling/FailureMiddlewareDispatcher.php b/src/Middleware/FailureHandling/FailureMiddlewareDispatcher.php index 17c631b2..c5c23b68 100644 --- a/src/Middleware/FailureHandling/FailureMiddlewareDispatcher.php +++ b/src/Middleware/FailureHandling/FailureMiddlewareDispatcher.php @@ -35,7 +35,7 @@ public function __construct( */ public function dispatch( FailureHandlingRequest $request, - MessageFailureHandlerInterface $finishHandler + MessageFailureHandlerInterface $finishHandler, ): FailureHandlingRequest { /** @var string $channel It is always string in this context */ $channel = $request->getQueue()->getChannel(); @@ -98,8 +98,8 @@ private function buildMiddlewares(array|callable|string|MiddlewareFailureInterfa $factory = $this->middlewareFactory; foreach ($definitions as $middlewareDefinition) { - $middlewares[] = static fn (): MiddlewareFailureInterface => - $factory->createFailureMiddleware($middlewareDefinition); + $middlewares[] = static fn(): MiddlewareFailureInterface + => $factory->createFailureMiddleware($middlewareDefinition); } return $middlewares; diff --git a/src/Middleware/FailureHandling/Implementation/ExponentialDelayMiddleware.php b/src/Middleware/FailureHandling/Implementation/ExponentialDelayMiddleware.php index 0cd0eacf..b8314986 100644 --- a/src/Middleware/FailureHandling/Implementation/ExponentialDelayMiddleware.php +++ b/src/Middleware/FailureHandling/Implementation/ExponentialDelayMiddleware.php @@ -59,7 +59,7 @@ public function __construct( public function processFailure( FailureHandlingRequest $request, - MessageFailureHandlerInterface $handler + MessageFailureHandlerInterface $handler, ): FailureHandlingRequest { $message = $request->getMessage(); if ($this->suites($message)) { @@ -68,7 +68,7 @@ public function processFailure( $middlewareDefinitions = $this->delayMiddleware->withDelay($this->getDelay($envelope)); $messageNew = $queue->push( $envelope, - $middlewareDefinitions + $middlewareDefinitions, ); return $request->withMessage($messageNew); diff --git a/src/Middleware/FailureHandling/Implementation/SendAgainMiddleware.php b/src/Middleware/FailureHandling/Implementation/SendAgainMiddleware.php index 589bc07a..146e5ccf 100644 --- a/src/Middleware/FailureHandling/Implementation/SendAgainMiddleware.php +++ b/src/Middleware/FailureHandling/Implementation/SendAgainMiddleware.php @@ -37,7 +37,7 @@ public function __construct( public function processFailure( FailureHandlingRequest $request, - MessageFailureHandlerInterface $handler + MessageFailureHandlerInterface $handler, ): FailureHandlingRequest { $message = $request->getMessage(); if ($this->suites($message)) { diff --git a/src/Middleware/FailureHandling/MiddlewareFactoryFailure.php b/src/Middleware/FailureHandling/MiddlewareFactoryFailure.php index fcee6695..02470001 100644 --- a/src/Middleware/FailureHandling/MiddlewareFactoryFailure.php +++ b/src/Middleware/FailureHandling/MiddlewareFactoryFailure.php @@ -17,6 +17,7 @@ use Yiisoft\Queue\Middleware\InvalidMiddlewareDefinitionException; use function is_string; +use function is_array; /** * Creates a middleware based on the definition provided. @@ -29,8 +30,7 @@ final class MiddlewareFactoryFailure implements MiddlewareFactoryFailureInterfac public function __construct( private readonly ContainerInterface $container, private readonly CallableFactory $callableFactory, - ) { - } + ) {} /** * @param array|callable|MiddlewareFailureInterface|string $middlewareDefinition Middleware definition in one of @@ -55,7 +55,7 @@ public function __construct( * @return MiddlewareFailureInterface */ public function createFailureMiddleware( - MiddlewareFailureInterface|callable|array|string $middlewareDefinition + MiddlewareFailureInterface|callable|array|string $middlewareDefinition, ): MiddlewareFailureInterface { if ($middlewareDefinition instanceof MiddlewareFailureInterface) { return $middlewareDefinition; @@ -94,7 +94,7 @@ private function wrapCallable(callable $callback): MiddlewareFailureInterface public function __construct( callable $callback, - private readonly ContainerInterface $container + private readonly ContainerInterface $container, ) { $this->callback = $callback; } @@ -116,7 +116,7 @@ public function processFailure(FailureHandlingRequest $request, MessageFailureHa } private function tryGetFromCallable( - callable|MiddlewareFailureInterface|array|string $definition + callable|MiddlewareFailureInterface|array|string $definition, ): ?MiddlewareFailureInterface { if ($definition instanceof Closure) { return $this->wrapCallable($definition); @@ -137,7 +137,7 @@ private function tryGetFromCallable( } private function tryGetFromArrayDefinition( - callable|MiddlewareFailureInterface|array|string $definition + callable|MiddlewareFailureInterface|array|string $definition, ): ?MiddlewareFailureInterface { if (!is_array($definition)) { return null; diff --git a/src/Middleware/FailureHandling/MiddlewareFailureStack.php b/src/Middleware/FailureHandling/MiddlewareFailureStack.php index b02a984b..5cc1380f 100644 --- a/src/Middleware/FailureHandling/MiddlewareFailureStack.php +++ b/src/Middleware/FailureHandling/MiddlewareFailureStack.php @@ -24,8 +24,7 @@ final class MiddlewareFailureStack implements MessageFailureHandlerInterface public function __construct( private readonly array $middlewares, private readonly MessageFailureHandlerInterface $finishHandler, - ) { - } + ) {} public function handleFailure(FailureHandlingRequest $request): FailureHandlingRequest { @@ -59,8 +58,7 @@ private function wrap(Closure $middlewareFactory, MessageFailureHandlerInterface public function __construct( private readonly Closure $middlewareFactory, private readonly MessageFailureHandlerInterface $handler, - ) { - } + ) {} public function handleFailure(FailureHandlingRequest $request): FailureHandlingRequest { diff --git a/src/Middleware/InvalidMiddlewareDefinitionException.php b/src/Middleware/InvalidMiddlewareDefinitionException.php index cbf4707e..704fba3e 100644 --- a/src/Middleware/InvalidMiddlewareDefinitionException.php +++ b/src/Middleware/InvalidMiddlewareDefinitionException.php @@ -57,7 +57,7 @@ static function (mixed &$item, int|string $key) { if (is_string($key)) { $item = '"' . $key . '" => ' . $item; } - } + }, ); /** @var string[] $items */ diff --git a/src/Middleware/Push/MiddlewareFactoryPush.php b/src/Middleware/Push/MiddlewareFactoryPush.php index e3444c6f..0cb151fc 100644 --- a/src/Middleware/Push/MiddlewareFactoryPush.php +++ b/src/Middleware/Push/MiddlewareFactoryPush.php @@ -15,6 +15,7 @@ use Yiisoft\Queue\Middleware\InvalidMiddlewareDefinitionException; use function is_string; +use function is_array; /** * Creates a middleware based on the definition provided. @@ -27,8 +28,7 @@ final class MiddlewareFactoryPush implements MiddlewareFactoryPushInterface public function __construct( private readonly ContainerInterface $container, private readonly CallableFactory $callableFactory, - ) { - } + ) {} /** * @param array|callable|MiddlewarePushInterface|string $middlewareDefinition Middleware definition in one of @@ -52,7 +52,7 @@ public function __construct( * @return MiddlewarePushInterface */ public function createPushMiddleware( - MiddlewarePushInterface|callable|array|string $middlewareDefinition + MiddlewarePushInterface|callable|array|string $middlewareDefinition, ): MiddlewarePushInterface { if ($middlewareDefinition instanceof MiddlewarePushInterface) { return $middlewareDefinition; @@ -91,7 +91,7 @@ private function wrapCallable(callable $callback): MiddlewarePushInterface public function __construct( callable $callback, - private readonly ContainerInterface $container + private readonly ContainerInterface $container, ) { $this->callback = $callback; } @@ -113,7 +113,7 @@ public function processPush(PushRequest $request, MessageHandlerPushInterface $h } private function tryGetFromCallable( - callable|MiddlewarePushInterface|array|string $definition + callable|MiddlewarePushInterface|array|string $definition, ): ?MiddlewarePushInterface { if ($definition instanceof Closure) { return $this->wrapCallable($definition); @@ -134,7 +134,7 @@ private function tryGetFromCallable( } private function tryGetFromArrayDefinition( - callable|MiddlewarePushInterface|array|string $definition + callable|MiddlewarePushInterface|array|string $definition, ): ?MiddlewarePushInterface { if (!is_array($definition)) { return null; diff --git a/src/Middleware/Push/MiddlewarePushStack.php b/src/Middleware/Push/MiddlewarePushStack.php index cf531316..a72a373e 100644 --- a/src/Middleware/Push/MiddlewarePushStack.php +++ b/src/Middleware/Push/MiddlewarePushStack.php @@ -24,8 +24,7 @@ final class MiddlewarePushStack implements MessageHandlerPushInterface public function __construct( private readonly array $middlewares, private readonly MessageHandlerPushInterface $finishHandler, - ) { - } + ) {} public function handlePush(PushRequest $request): PushRequest { @@ -59,8 +58,7 @@ private function wrap(Closure $middlewareFactory, MessageHandlerPushInterface $h public function __construct( private readonly Closure $middlewareFactory, private readonly MessageHandlerPushInterface $handler, - ) { - } + ) {} public function handlePush(PushRequest $request): PushRequest { diff --git a/src/Middleware/Push/PushMiddlewareDispatcher.php b/src/Middleware/Push/PushMiddlewareDispatcher.php index a3889156..86532550 100644 --- a/src/Middleware/Push/PushMiddlewareDispatcher.php +++ b/src/Middleware/Push/PushMiddlewareDispatcher.php @@ -34,7 +34,7 @@ public function __construct( */ public function dispatch( PushRequest $request, - MessageHandlerPushInterface $finishHandler + MessageHandlerPushInterface $finishHandler, ): PushRequest { if ($this->stack === null) { $this->stack = new MiddlewarePushStack($this->buildMiddlewares(), $finishHandler); @@ -89,8 +89,8 @@ private function buildMiddlewares(): array $factory = $this->middlewareFactory; foreach ($this->middlewareDefinitions as $middlewareDefinition) { - $middlewares[] = static fn (): MiddlewarePushInterface => $factory->createPushMiddleware( - $middlewareDefinition + $middlewares[] = static fn(): MiddlewarePushInterface => $factory->createPushMiddleware( + $middlewareDefinition, ); } diff --git a/src/Middleware/Push/PushRequest.php b/src/Middleware/Push/PushRequest.php index 98b72429..09aaed9b 100644 --- a/src/Middleware/Push/PushRequest.php +++ b/src/Middleware/Push/PushRequest.php @@ -9,9 +9,7 @@ final class PushRequest { - public function __construct(private MessageInterface $message, private ?AdapterInterface $adapter) - { - } + public function __construct(private MessageInterface $message, private ?AdapterInterface $adapter) {} public function getMessage(): MessageInterface { diff --git a/src/Provider/AdapterFactoryQueueProvider.php b/src/Provider/AdapterFactoryQueueProvider.php index aac1b205..1e52875d 100644 --- a/src/Provider/AdapterFactoryQueueProvider.php +++ b/src/Provider/AdapterFactoryQueueProvider.php @@ -73,7 +73,7 @@ public function has(string|BackedEnum $channel): bool /** * @throws InvalidQueueConfigException */ - private function getOrTryToCreate(string $channel): QueueInterface|null + private function getOrTryToCreate(string $channel): ?QueueInterface { if (array_key_exists($channel, $this->queues)) { return $this->queues[$channel]; diff --git a/src/Provider/CompositeQueueProvider.php b/src/Provider/CompositeQueueProvider.php index f699d256..a7d1def3 100644 --- a/src/Provider/CompositeQueueProvider.php +++ b/src/Provider/CompositeQueueProvider.php @@ -21,7 +21,7 @@ final class CompositeQueueProvider implements QueueProviderInterface * @param QueueProviderInterface ...$providers Queue providers to use. */ public function __construct( - QueueProviderInterface ...$providers + QueueProviderInterface ...$providers, ) { $this->providers = $providers; } diff --git a/src/Provider/InvalidQueueConfigException.php b/src/Provider/InvalidQueueConfigException.php index 136fe746..c1a2a312 100644 --- a/src/Provider/InvalidQueueConfigException.php +++ b/src/Provider/InvalidQueueConfigException.php @@ -9,6 +9,4 @@ /** * Thrown when queue configuration is invalid. */ -final class InvalidQueueConfigException extends LogicException implements QueueProviderException -{ -} +final class InvalidQueueConfigException extends LogicException implements QueueProviderException {} diff --git a/src/Provider/PrototypeQueueProvider.php b/src/Provider/PrototypeQueueProvider.php index 929d124a..84cdcf7d 100644 --- a/src/Provider/PrototypeQueueProvider.php +++ b/src/Provider/PrototypeQueueProvider.php @@ -20,8 +20,7 @@ final class PrototypeQueueProvider implements QueueProviderInterface public function __construct( private readonly QueueInterface $baseQueue, private readonly AdapterInterface $baseAdapter, - ) { - } + ) {} public function get(string|BackedEnum $channel): QueueInterface { diff --git a/src/Provider/QueueProviderException.php b/src/Provider/QueueProviderException.php index 17fa3bc4..3dce33e5 100644 --- a/src/Provider/QueueProviderException.php +++ b/src/Provider/QueueProviderException.php @@ -9,6 +9,4 @@ /** * Base interface representing a generic exception in a queue provider. */ -interface QueueProviderException extends Throwable -{ -} +interface QueueProviderException extends Throwable {} diff --git a/src/Queue.php b/src/Queue.php index 5088c3eb..5c09f077 100644 --- a/src/Queue.php +++ b/src/Queue.php @@ -31,7 +31,7 @@ public function __construct( private readonly LoggerInterface $logger, private readonly PushMiddlewareDispatcher $pushMiddlewareDispatcher, private ?AdapterInterface $adapter = null, - MiddlewarePushInterface|callable|array|string ...$middlewareDefinitions + MiddlewarePushInterface|callable|array|string ...$middlewareDefinitions, ) { $this->middlewareDefinitions = $middlewareDefinitions; $this->adapterPushHandler = new AdapterPushHandler(); @@ -45,12 +45,12 @@ public function getChannel(): string public function push( MessageInterface $message, - MiddlewarePushInterface|callable|array|string ...$middlewareDefinitions + MiddlewarePushInterface|callable|array|string ...$middlewareDefinitions, ): MessageInterface { $this->checkAdapter(); $this->logger->debug( 'Preparing to push message with handler name "{handlerName}".', - ['handlerName' => $message->getHandlerName()] + ['handlerName' => $message->getHandlerName()], ); $request = new PushRequest($message, $this->adapter); @@ -62,7 +62,7 @@ public function push( $messageId = $message->getMetadata()[IdEnvelope::MESSAGE_ID_KEY] ?? 'null'; $this->logger->info( 'Pushed message with handler name "{handlerName}" to the queue. Assigned ID #{id}.', - ['handlerName' => $message->getHandlerName(), 'id' => $messageId] + ['handlerName' => $message->getHandlerName(), 'id' => $messageId], ); return $message; @@ -88,7 +88,7 @@ public function run(int $max = 0): int $this->logger->info( 'Processed {count} queue messages.', - ['count' => $count] + ['count' => $count], ); return $count; @@ -99,7 +99,7 @@ public function listen(): void $this->checkAdapter(); $this->logger->info('Start listening to the queue.'); - $this->adapter->subscribe(fn (MessageInterface $message) => $this->handle($message)); + $this->adapter->subscribe(fn(MessageInterface $message) => $this->handle($message)); $this->logger->info('Finish listening to the queue.'); } @@ -155,7 +155,7 @@ private function createPushHandler(MiddlewarePushInterface|callable|array|string return new class ( $this->adapterPushHandler, $this->pushMiddlewareDispatcher, - array_merge($this->middlewareDefinitions, $middlewares) + array_merge($this->middlewareDefinitions, $middlewares), ) implements MessageHandlerPushInterface { public function __construct( private readonly AdapterPushHandler $adapterPushHandler, @@ -164,8 +164,7 @@ public function __construct( * @var array|array[]|callable[]|MiddlewarePushInterface[]|string[] */ private readonly array $middlewares, - ) { - } + ) {} public function handlePush(PushRequest $request): PushRequest { diff --git a/src/Worker/Worker.php b/src/Worker/Worker.php index 33c2dff6..bdc4dd6f 100644 --- a/src/Worker/Worker.php +++ b/src/Worker/Worker.php @@ -28,6 +28,11 @@ use Yiisoft\Queue\QueueInterface; use Yiisoft\Queue\Message\IdEnvelope; +use function array_key_exists; +use function is_array; +use function is_string; +use function sprintf; + final class Worker implements WorkerInterface { private array $handlersCached = []; @@ -39,8 +44,7 @@ public function __construct( private readonly ContainerInterface $container, private readonly ConsumeMiddlewareDispatcher $consumeMiddlewareDispatcher, private readonly FailureMiddlewareDispatcher $failureMiddlewareDispatcher, - ) { - } + ) {} /** * @throws Throwable @@ -56,7 +60,7 @@ public function process(MessageInterface $message, QueueInterface $queue): Messa } $request = new ConsumeRequest($message, $queue); - $closure = fn (MessageInterface $message): mixed => $this->injector->invoke($handler, [$message]); + $closure = fn(MessageInterface $message): mixed => $this->injector->invoke($handler, [$message]); try { return $this->consumeMiddlewareDispatcher->dispatch($request, $this->createConsumeHandler($closure))->getMessage(); } catch (Throwable $exception) { @@ -105,7 +109,7 @@ private function getHandler(string $name): ?callable * @throws NotFoundExceptionInterface * @return callable|null */ - private function prepare(callable|object|array|string|null $definition): callable|null + private function prepare(callable|object|array|string|null $definition): ?callable { if (is_string($definition) && $this->container->has($definition)) { return $this->container->get($definition); diff --git a/tests/App/DummyQueue.php b/tests/App/DummyQueue.php index 579afb13..9286ab64 100644 --- a/tests/App/DummyQueue.php +++ b/tests/App/DummyQueue.php @@ -14,13 +14,12 @@ final class DummyQueue implements QueueInterface { public function __construct( - private readonly string $channel - ) { - } + private readonly string $channel, + ) {} public function push( MessageInterface $message, - string|array|callable|MiddlewarePushInterface ...$middlewareDefinitions + string|array|callable|MiddlewarePushInterface ...$middlewareDefinitions, ): MessageInterface { return $message; } @@ -30,9 +29,7 @@ public function run(int $max = 0): int throw new Exception('`run()` method is not implemented yet.'); } - public function listen(): void - { - } + public function listen(): void {} public function status(string|int $id): JobStatus { diff --git a/tests/Benchmark/QueueBench.php b/tests/Benchmark/QueueBench.php index 76480523..f738e13b 100644 --- a/tests/Benchmark/QueueBench.php +++ b/tests/Benchmark/QueueBench.php @@ -41,8 +41,7 @@ public function __construct() $worker = new Worker( [ - 'foo' => static function (): void { - }, + 'foo' => static function (): void {}, ], $logger, new Injector($container), diff --git a/tests/Benchmark/Support/VoidAdapter.php b/tests/Benchmark/Support/VoidAdapter.php index 863ed587..3a946d4a 100644 --- a/tests/Benchmark/Support/VoidAdapter.php +++ b/tests/Benchmark/Support/VoidAdapter.php @@ -20,9 +20,7 @@ final class VoidAdapter implements AdapterInterface */ public string $message; - public function __construct(private readonly MessageSerializerInterface $serializer) - { - } + public function __construct(private readonly MessageSerializerInterface $serializer) {} public function runExisting(callable $handlerCallback): void { diff --git a/tests/Integration/MessageConsumingTest.php b/tests/Integration/MessageConsumingTest.php index 8e1d40e7..57bd63b8 100644 --- a/tests/Integration/MessageConsumingTest.php +++ b/tests/Integration/MessageConsumingTest.php @@ -30,14 +30,14 @@ public function testMessagesConsumed(): void $container = $this->createMock(ContainerInterface::class); $worker = new Worker( [ - 'test' => fn (MessageInterface $message): mixed => $this->messagesProcessed[] = $message->getData(), - 'test2' => fn (MessageInterface $message): mixed => $this->messagesProcessedSecond[] = $message->getData(), + 'test' => fn(MessageInterface $message): mixed => $this->messagesProcessed[] = $message->getData(), + 'test2' => fn(MessageInterface $message): mixed => $this->messagesProcessedSecond[] = $message->getData(), ], new NullLogger(), new Injector($container), $container, new ConsumeMiddlewareDispatcher($this->createMock(MiddlewareFactoryConsumeInterface::class)), - new FailureMiddlewareDispatcher($this->createMock(MiddlewareFactoryFailureInterface::class), []) + new FailureMiddlewareDispatcher($this->createMock(MiddlewareFactoryFailureInterface::class), []), ); $messages = [1, 'foo', 'bar-baz']; @@ -62,7 +62,7 @@ public function testMessagesConsumedByHandlerClass(): void new Injector($container), $container, new ConsumeMiddlewareDispatcher($this->createMock(MiddlewareFactoryConsumeInterface::class)), - new FailureMiddlewareDispatcher($this->createMock(MiddlewareFactoryFailureInterface::class), []) + new FailureMiddlewareDispatcher($this->createMock(MiddlewareFactoryFailureInterface::class), []), ); $messages = [1, 'foo', 'bar-baz']; diff --git a/tests/Integration/MiddlewareTest.php b/tests/Integration/MiddlewareTest.php index d3752ec1..57b62d62 100644 --- a/tests/Integration/MiddlewareTest.php +++ b/tests/Integration/MiddlewareTest.php @@ -52,7 +52,7 @@ public function testFullStackPush(): void new MiddlewareFactoryPush( $this->createMock(ContainerInterface::class), new CallableFactory( - $this->createMock(ContainerInterface::class) + $this->createMock(ContainerInterface::class), ), ), new TestMiddleware('common 1'), @@ -97,7 +97,7 @@ public function testFullStackConsume(): void new MiddlewareFactoryConsume( $this->createMock(ContainerInterface::class), new CallableFactory( - $this->createMock(ContainerInterface::class) + $this->createMock(ContainerInterface::class), ), ), new TestMiddleware('common 1'), @@ -110,7 +110,7 @@ public function testFullStackConsume(): void ); $worker = new Worker( - ['test' => static fn () => true], + ['test' => static fn() => true], new SimpleLogger(), new Injector($container), $container, @@ -130,7 +130,7 @@ public function testFullStackFailure(): void $this->expectExceptionObject($exception); $message = new Message('simple', null, []); - $queueCallback = static fn (MessageInterface $message): MessageInterface => $message; + $queueCallback = static fn(MessageInterface $message): MessageInterface => $message; $queue = $this->createMock(QueueInterface::class); $container = new SimpleContainer([SendAgainMiddleware::class => new SendAgainMiddleware('test-container', 1, $queue)]); $callableFactory = new CallableFactory($container); @@ -149,7 +149,7 @@ public function testFullStackFailure(): void new SendAgainMiddleware('test-callable', 1, $queue), 'processFailure', ], - fn (): SendAgainMiddleware => new SendAgainMiddleware('test-callable-2', 1, $queue), + fn(): SendAgainMiddleware => new SendAgainMiddleware('test-callable-2', 1, $queue), SendAgainMiddleware::class, new ExponentialDelayMiddleware( 'test', diff --git a/tests/Integration/Support/TestHandler.php b/tests/Integration/Support/TestHandler.php index ce71f7fb..2a3c50f8 100644 --- a/tests/Integration/Support/TestHandler.php +++ b/tests/Integration/Support/TestHandler.php @@ -9,9 +9,7 @@ final class TestHandler implements MessageHandlerInterface { - public function __construct(public array $messagesProcessed = []) - { - } + public function __construct(public array $messagesProcessed = []) {} public function handle(MessageInterface $message): void { diff --git a/tests/Integration/Support/TestMiddleware.php b/tests/Integration/Support/TestMiddleware.php index 78b8a907..81f55e4f 100644 --- a/tests/Integration/Support/TestMiddleware.php +++ b/tests/Integration/Support/TestMiddleware.php @@ -14,9 +14,7 @@ final class TestMiddleware implements MiddlewarePushInterface, MiddlewareConsumeInterface { - public function __construct(private readonly string $stage) - { - } + public function __construct(private readonly string $stage) {} public function processPush(PushRequest $request, MessageHandlerPushInterface $handler): PushRequest { diff --git a/tests/TestCase.php b/tests/TestCase.php index 8f64bd8c..c7bb2c75 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -32,7 +32,7 @@ abstract class TestCase extends BaseTestCase { protected ?ContainerInterface $container = null; - protected Queue|null $queue = null; + protected ?Queue $queue = null; protected ?AdapterInterface $adapter = null; protected ?LoopInterface $loop = null; protected ?WorkerInterface $worker = null; @@ -162,7 +162,7 @@ protected function getEventHandlers(): array protected function getMessageHandlers(): array { return [ - 'simple' => fn () => $this->executionTimes++, + 'simple' => fn() => $this->executionTimes++, 'exceptional' => function (): never { $this->executionTimes++; diff --git a/tests/Unit/Adapter/SynchronousAdapterTest.php b/tests/Unit/Adapter/SynchronousAdapterTest.php index acdce04d..f05ac078 100644 --- a/tests/Unit/Adapter/SynchronousAdapterTest.php +++ b/tests/Unit/Adapter/SynchronousAdapterTest.php @@ -19,11 +19,6 @@ final class SynchronousAdapterTest extends TestCase { - protected function needsRealAdapter(): bool - { - return true; - } - public function testNonIntegerId(): void { $queue = $this @@ -122,4 +117,9 @@ public function testChannelInConstructor(string $expected, mixed $channel): void $this->assertSame($expected, $adapter->getChannel()); } + + protected function needsRealAdapter(): bool + { + return true; + } } diff --git a/tests/Unit/Cli/SignalLoopTest.php b/tests/Unit/Cli/SignalLoopTest.php index 37ed71ba..1b542405 100644 --- a/tests/Unit/Cli/SignalLoopTest.php +++ b/tests/Unit/Cli/SignalLoopTest.php @@ -9,6 +9,13 @@ use PHPUnit\Framework\Attributes\RequiresPhpExtension; use Yiisoft\Queue\Cli\SignalLoop; +use const SIGALRM; +use const SIGCONT; +use const SIGHUP; +use const SIGINT; +use const SIGTERM; +use const SIGTSTP; + #[RequiresPhpExtension('pcntl')] final class SignalLoopTest extends TestCase { @@ -27,11 +34,11 @@ public function testMemoryLimitReached(): void public function testSuspendAndResume(): void { $loop = new SignalLoop(0); - pcntl_signal(\SIGALRM, static function (): void { - posix_kill(getmypid(), \SIGCONT); + pcntl_signal(SIGALRM, static function (): void { + posix_kill(getmypid(), SIGCONT); }); - posix_kill(getmypid(), \SIGTSTP); + posix_kill(getmypid(), SIGTSTP); pcntl_alarm(1); $start = microtime(true); @@ -55,9 +62,9 @@ public function testExitSignals(int $signal): void public static function exitSignalProvider(): iterable { - yield 'SIGHUP' => [\SIGHUP]; - yield 'SIGINT' => [\SIGINT]; - yield 'SIGTERM' => [\SIGTERM]; + yield 'SIGHUP' => [SIGHUP]; + yield 'SIGINT' => [SIGINT]; + yield 'SIGTERM' => [SIGTERM]; } public function testResumeSignal(): void @@ -65,10 +72,10 @@ public function testResumeSignal(): void $loop = new SignalLoop(0); // First suspend the loop - posix_kill(getmypid(), \SIGTSTP); + posix_kill(getmypid(), SIGTSTP); // Then immediately resume - posix_kill(getmypid(), \SIGCONT); + posix_kill(getmypid(), SIGCONT); $start = microtime(true); $result = $loop->canContinue(); @@ -83,8 +90,8 @@ public function testMultipleExitSignals(): void $loop = new SignalLoop(0); // Send multiple exit signals - posix_kill(getmypid(), \SIGINT); - posix_kill(getmypid(), \SIGTERM); + posix_kill(getmypid(), SIGINT); + posix_kill(getmypid(), SIGTERM); $result = $loop->canContinue(); @@ -96,13 +103,13 @@ public function testSuspendOverridesResume(): void $loop = new SignalLoop(0); // Resume first - posix_kill(getmypid(), \SIGCONT); + posix_kill(getmypid(), SIGCONT); // Then suspend - posix_kill(getmypid(), \SIGTSTP); + posix_kill(getmypid(), SIGTSTP); // Set up alarm to resume after 1 second - pcntl_signal(\SIGALRM, static function (): void { - posix_kill(getmypid(), \SIGCONT); + pcntl_signal(SIGALRM, static function (): void { + posix_kill(getmypid(), SIGCONT); }); pcntl_alarm(1); diff --git a/tests/Unit/Command/ListenAllCommandTest.php b/tests/Unit/Command/ListenAllCommandTest.php index bef271e5..55f21330 100644 --- a/tests/Unit/Command/ListenAllCommandTest.php +++ b/tests/Unit/Command/ListenAllCommandTest.php @@ -27,7 +27,6 @@ public function testExecute(): void $loop = $this->createMock(LoopInterface::class); $loop->method('canContinue')->willReturn(true, false); - $command = new ListenAllCommand( $queueFactory, $loop, diff --git a/tests/Unit/Command/SoftLimitTraitTest.php b/tests/Unit/Command/SoftLimitTraitTest.php index 187c38d5..00a427e9 100644 --- a/tests/Unit/Command/SoftLimitTraitTest.php +++ b/tests/Unit/Command/SoftLimitTraitTest.php @@ -11,7 +11,7 @@ final class SoftLimitTraitTest extends TestCase { public function testMemoryLimitNotReachedWhenLimitIsZero(): void { - $instance = new class () { + $instance = new class { use SoftLimitTrait { memoryLimitReached as public; } @@ -33,9 +33,7 @@ public function testMemoryLimitNotReachedWhenUsageIsLower(): void memoryLimitReached as public; } - public function __construct(private readonly int $limit) - { - } + public function __construct(private readonly int $limit) {} protected function getMemoryLimit(): int { @@ -54,9 +52,7 @@ public function testMemoryLimitReachedWhenUsageIsHigher(): void memoryLimitReached as public; } - public function __construct(private readonly int $limit) - { - } + public function __construct(private readonly int $limit) {} protected function getMemoryLimit(): int { @@ -75,9 +71,7 @@ public function testMemoryLimitExceededWhenUsageIncreases(): void memoryLimitReached as public; } - public function __construct(private readonly int $limit) - { - } + public function __construct(private readonly int $limit) {} protected function getMemoryLimit(): int { diff --git a/tests/Unit/Debug/QueueCollectorTest.php b/tests/Unit/Debug/QueueCollectorTest.php index 34ff90c4..913d2dec 100644 --- a/tests/Unit/Debug/QueueCollectorTest.php +++ b/tests/Unit/Debug/QueueCollectorTest.php @@ -87,7 +87,7 @@ protected function checkCollectedData(array $data): void $this->pushMessage, ], ], - $processingMessages + $processingMessages, ); } diff --git a/tests/Unit/Debug/QueueDecoratorTest.php b/tests/Unit/Debug/QueueDecoratorTest.php index ead6c671..50ec6eef 100644 --- a/tests/Unit/Debug/QueueDecoratorTest.php +++ b/tests/Unit/Debug/QueueDecoratorTest.php @@ -103,7 +103,7 @@ public function testImmutable(): void { $queueDecorator = new QueueDecorator( $this->createMock(QueueInterface::class), - new QueueCollector() + new QueueCollector(), ); $this->assertNotSame($queueDecorator, $queueDecorator->withAdapter(new FakeAdapter())); } diff --git a/tests/Unit/Message/IdEnvelopeTest.php b/tests/Unit/Message/IdEnvelopeTest.php index b66e958d..20138c05 100644 --- a/tests/Unit/Message/IdEnvelopeTest.php +++ b/tests/Unit/Message/IdEnvelopeTest.php @@ -53,7 +53,7 @@ public function testFromMessageWithNullId(): void public function testFromMessageWithObjectHavingToString(): void { - $stringableObject = new class () { + $stringableObject = new class { public function __toString(): string { return 'object-id'; diff --git a/tests/Unit/Message/JsonMessageSerializerTest.php b/tests/Unit/Message/JsonMessageSerializerTest.php index e2495245..6c479981 100644 --- a/tests/Unit/Message/JsonMessageSerializerTest.php +++ b/tests/Unit/Message/JsonMessageSerializerTest.php @@ -13,6 +13,8 @@ use Yiisoft\Queue\Message\Message; use Yiisoft\Queue\Tests\Unit\Support\TestMessage; +use function sprintf; + /** * Testing message serialization options */ diff --git a/tests/Unit/Middleware/CallableFactoryTest.php b/tests/Unit/Middleware/CallableFactoryTest.php index ce8247ad..6d739300 100644 --- a/tests/Unit/Middleware/CallableFactoryTest.php +++ b/tests/Unit/Middleware/CallableFactoryTest.php @@ -13,7 +13,7 @@ final class CallableFactoryTest extends TestCase { public function testCreateFromContainerStringInvokable(): void { - $invokable = new class () { + $invokable = new class { public function __invoke(): string { return 'ok'; @@ -32,7 +32,7 @@ public function __invoke(): string public function testCreateFromStaticMethodArray(): void { - $class = new class () { + $class = new class { public static function ping(): string { return 'pong'; @@ -50,7 +50,7 @@ public static function ping(): string public function testCreateFromContainerObjectMethod(): void { - $service = new class () { + $service = new class { public function go(): string { return 'ok'; @@ -73,6 +73,6 @@ public function testFriendlyException(): void $e = new InvalidCallableConfigurationException(); self::assertSame('Invalid callable configuration.', $e->getName()); self::assertNotNull($e->getSolution()); - self::assertStringContainsString('callable', (string)$e->getSolution()); + self::assertStringContainsString('callable', (string) $e->getSolution()); } } diff --git a/tests/Unit/Middleware/Consume/InvalidMiddlewareDefinitionExceptionTest.php b/tests/Unit/Middleware/Consume/InvalidMiddlewareDefinitionExceptionTest.php index 756c616d..c737aa2a 100644 --- a/tests/Unit/Middleware/Consume/InvalidMiddlewareDefinitionExceptionTest.php +++ b/tests/Unit/Middleware/Consume/InvalidMiddlewareDefinitionExceptionTest.php @@ -55,7 +55,7 @@ public function testUnknownDefinition(mixed $definition): void $exception = new InvalidMiddlewareDefinitionException($definition); self::assertSame( 'Parameter should be either middleware class name or a callable.', - $exception->getMessage() + $exception->getMessage(), ); } } diff --git a/tests/Unit/Middleware/Consume/MiddlewareDispatcherTest.php b/tests/Unit/Middleware/Consume/MiddlewareDispatcherTest.php index b4739110..806b5d52 100644 --- a/tests/Unit/Middleware/Consume/MiddlewareDispatcherTest.php +++ b/tests/Unit/Middleware/Consume/MiddlewareDispatcherTest.php @@ -32,7 +32,7 @@ public function testCallableMiddlewareCalled(): void static function (ConsumeRequest $request) use ($queue): ConsumeRequest { return $request->withMessage(new Message('test', 'New closure test data'))->withQueue($queue); }, - ] + ], ); $request = $dispatcher->dispatch($request, $this->getRequestHandler()); @@ -45,7 +45,7 @@ public function testArrayMiddlewareCallableDefinition(): void $container = $this->createContainer( [ TestCallableMiddleware::class => new TestCallableMiddleware(), - ] + ], ); $dispatcher = $this->createDispatcher($container)->withMiddlewares([[TestCallableMiddleware::class, 'index']]); $request = $dispatcher->dispatch($request, $this->getRequestHandler()); @@ -117,7 +117,7 @@ public function testHasMiddlewares(array $definitions, bool $expected): void { self::assertSame( $expected, - $this->createDispatcher()->withMiddlewares($definitions)->hasMiddlewares() + $this->createDispatcher()->withMiddlewares($definitions)->hasMiddlewares(), ); } @@ -134,7 +134,7 @@ public function testResetStackOnWithMiddlewares(): void [ TestCallableMiddleware::class => new TestCallableMiddleware(), TestMiddleware::class => new TestMiddleware(), - ] + ], ); $dispatcher = $this @@ -150,7 +150,7 @@ public function testResetStackOnWithMiddlewares(): void private function getRequestHandler(): MessageHandlerConsumeInterface { - return new class () implements MessageHandlerConsumeInterface { + return new class implements MessageHandlerConsumeInterface { public function handleConsume(ConsumeRequest $request): ConsumeRequest { return $request; @@ -178,7 +178,7 @@ private function getConsumeRequest(): ConsumeRequest { return new ConsumeRequest( new Message('handler', 'data'), - $this->createMock(QueueInterface::class) + $this->createMock(QueueInterface::class), ); } } diff --git a/tests/Unit/Middleware/Consume/MiddlewareFactoryTest.php b/tests/Unit/Middleware/Consume/MiddlewareFactoryTest.php index 682bd175..e920a0a4 100644 --- a/tests/Unit/Middleware/Consume/MiddlewareFactoryTest.php +++ b/tests/Unit/Middleware/Consume/MiddlewareFactoryTest.php @@ -43,13 +43,13 @@ public function testCreateFromArray(): void { $container = $this->getContainer([TestCallableMiddleware::class => new TestCallableMiddleware()]); $middleware = $this->getMiddlewareFactory($container)->createConsumeMiddleware( - [TestCallableMiddleware::class, 'index'] + [TestCallableMiddleware::class, 'index'], ); self::assertSame( 'New test data', $middleware->processConsume( $this->getConsumeRequest(), - $this->createMock(MessageHandlerConsumeInterface::class) + $this->createMock(MessageHandlerConsumeInterface::class), )->getMessage()->getData(), ); } @@ -58,17 +58,17 @@ public function testCreateFromClosureResponse(): void { $container = $this->getContainer([TestCallableMiddleware::class => new TestCallableMiddleware()]); $middleware = $this->getMiddlewareFactory($container)->createConsumeMiddleware( - fn (): ConsumeRequest => new ConsumeRequest( + fn(): ConsumeRequest => new ConsumeRequest( new Message('test', 'test data'), $this->createMock(QueueInterface::class), - ) + ), ); self::assertSame( 'test data', $middleware->processConsume( $this->getConsumeRequest(), - $this->createMock(MessageHandlerConsumeInterface::class) - )->getMessage()->getData() + $this->createMock(MessageHandlerConsumeInterface::class), + )->getMessage()->getData(), ); } @@ -76,14 +76,14 @@ public function testCreateFromClosureMiddleware(): void { $container = $this->getContainer([TestCallableMiddleware::class => new TestCallableMiddleware()]); $middleware = $this->getMiddlewareFactory($container)->createConsumeMiddleware( - static fn (): MiddlewareConsumeInterface => new TestMiddleware() + static fn(): MiddlewareConsumeInterface => new TestMiddleware(), ); self::assertSame( 'New middleware test data', $middleware->processConsume( $this->getConsumeRequest(), - $this->createMock(MessageHandlerConsumeInterface::class) - )->getMessage()->getData() + $this->createMock(MessageHandlerConsumeInterface::class), + )->getMessage()->getData(), ); } @@ -96,8 +96,8 @@ public function testCreateWithUseParamsMiddleware(): void 'New middleware test data', $middleware->processConsume( $this->getConsumeRequest(), - $this->getRequestHandler() - )->getMessage()->getData() + $this->getRequestHandler(), + )->getMessage()->getData(), ); } @@ -105,7 +105,7 @@ public function testCreateWithTestCallableMiddleware(): void { $container = $this->getContainer([TestCallableMiddleware::class => new TestCallableMiddleware()]); $middleware = $this->getMiddlewareFactory($container)->createConsumeMiddleware( - [TestCallableMiddleware::class, 'index'] + [TestCallableMiddleware::class, 'index'], ); $request = $this->getConsumeRequest(); @@ -113,8 +113,8 @@ public function testCreateWithTestCallableMiddleware(): void 'New test data', $middleware->processConsume( $request, - $this->getRequestHandler() - )->getMessage()->getData() + $this->getRequestHandler(), + )->getMessage()->getData(), ); } @@ -122,13 +122,13 @@ public function testInvalidMiddlewareWithWrongCallable(): void { $container = $this->getContainer([TestCallableMiddleware::class => new TestCallableMiddleware()]); $middleware = $this->getMiddlewareFactory($container)->createConsumeMiddleware( - static fn () => 42 + static fn() => 42, ); $this->expectException(InvalidMiddlewareDefinitionException::class); $middleware->processConsume( $this->getConsumeRequest(), - $this->createMock(MessageHandlerConsumeInterface::class) + $this->createMock(MessageHandlerConsumeInterface::class), ); } @@ -157,13 +157,13 @@ public function testInvalidMiddlewareWithWrongController(): void { $container = $this->getContainer([InvalidController::class => new InvalidController()]); $middleware = $this->getMiddlewareFactory($container)->createConsumeMiddleware( - [InvalidController::class, 'index'] + [InvalidController::class, 'index'], ); $this->expectException(InvalidMiddlewareDefinitionException::class); $middleware->processConsume( $this->getConsumeRequest(), - $this->createMock(MessageHandlerConsumeInterface::class) + $this->createMock(MessageHandlerConsumeInterface::class), ); } @@ -181,7 +181,7 @@ private function getContainer(array $instances = []): ContainerInterface private function getRequestHandler(): MessageHandlerConsumeInterface { - return new class () implements MessageHandlerConsumeInterface { + return new class implements MessageHandlerConsumeInterface { public function handleConsume(ConsumeRequest $request): ConsumeRequest { return $request; @@ -193,7 +193,7 @@ private function getConsumeRequest(): ConsumeRequest { return new ConsumeRequest( new Message('handler', 'data'), - $this->createMock(QueueInterface::class) + $this->createMock(QueueInterface::class), ); } } diff --git a/tests/Unit/Middleware/Consume/Support/TestMiddleware.php b/tests/Unit/Middleware/Consume/Support/TestMiddleware.php index 4a0baacd..0f42c9a6 100644 --- a/tests/Unit/Middleware/Consume/Support/TestMiddleware.php +++ b/tests/Unit/Middleware/Consume/Support/TestMiddleware.php @@ -11,9 +11,7 @@ final class TestMiddleware implements MiddlewareConsumeInterface { - public function __construct(private readonly string $message = 'New middleware test data') - { - } + public function __construct(private readonly string $message = 'New middleware test data') {} public function processConsume(ConsumeRequest $request, MessageHandlerConsumeInterface $handler): ConsumeRequest { diff --git a/tests/Unit/Middleware/FailureHandling/FailureHandlingRequestTest.php b/tests/Unit/Middleware/FailureHandling/FailureHandlingRequestTest.php index 534111ee..a15a7b0e 100644 --- a/tests/Unit/Middleware/FailureHandling/FailureHandlingRequestTest.php +++ b/tests/Unit/Middleware/FailureHandling/FailureHandlingRequestTest.php @@ -18,7 +18,7 @@ public function testImmutable(): void $request1 = new FailureHandlingRequest( new Message('test', null), new Exception('exception 1'), - $queue + $queue, ); $request2 = $request1->withQueue($queue); $request3 = $request1->withException(new Exception('exception 2')); diff --git a/tests/Unit/Middleware/FailureHandling/Implementation/ExponentialDelayMiddlewareTest.php b/tests/Unit/Middleware/FailureHandling/Implementation/ExponentialDelayMiddlewareTest.php index 29ac6827..c096df34 100644 --- a/tests/Unit/Middleware/FailureHandling/Implementation/ExponentialDelayMiddlewareTest.php +++ b/tests/Unit/Middleware/FailureHandling/Implementation/ExponentialDelayMiddlewareTest.php @@ -16,6 +16,8 @@ use Yiisoft\Queue\QueueInterface; use Yiisoft\Queue\Tests\TestCase; +use const PHP_INT_MAX; + class ExponentialDelayMiddlewareTest extends TestCase { public static function constructorRequirementsProvider(): array @@ -164,7 +166,7 @@ public function testPipelineFailure(): void $message = new Message( 'test', null, - [FailureEnvelope::FAILURE_META_KEY => [ExponentialDelayMiddleware::META_KEY_ATTEMPTS . '-test' => 2]] + [FailureEnvelope::FAILURE_META_KEY => [ExponentialDelayMiddleware::META_KEY_ATTEMPTS . '-test' => 2]], ); $queue = $this->createMock(QueueInterface::class); $middleware = new ExponentialDelayMiddleware( diff --git a/tests/Unit/Middleware/FailureHandling/Implementation/SendAgainMiddlewareTest.php b/tests/Unit/Middleware/FailureHandling/Implementation/SendAgainMiddlewareTest.php index d8b0cdf9..8a138120 100644 --- a/tests/Unit/Middleware/FailureHandling/Implementation/SendAgainMiddlewareTest.php +++ b/tests/Unit/Middleware/FailureHandling/Implementation/SendAgainMiddlewareTest.php @@ -22,11 +22,11 @@ class SendAgainMiddlewareTest extends TestCase { + final public const KEY_EXPONENTIAL_ATTEMPTS = ExponentialDelayMiddleware::META_KEY_ATTEMPTS . '-test'; + final public const KEY_EXPONENTIAL_DELAY = ExponentialDelayMiddleware::META_KEY_DELAY . '-test'; private const EXPONENTIAL_STRATEGY_DELAY_INITIAL = 1; private const EXPONENTIAL_STRATEGY_DELAY_MAXIMUM = 5; private const EXPONENTIAL_STRATEGY_EXPONENT = 2; - final public const KEY_EXPONENTIAL_ATTEMPTS = ExponentialDelayMiddleware::META_KEY_ATTEMPTS . '-test'; - final public const KEY_EXPONENTIAL_DELAY = ExponentialDelayMiddleware::META_KEY_DELAY . '-test'; public static function queueSendingStrategyProvider(): array { @@ -145,7 +145,7 @@ public function testQueueSendingStrategies( string $strategyName, bool $suites, array $metaInitial, - array $metaResult + array $metaResult, ): void { if (!$suites) { $this->expectExceptionMessage('testException'); @@ -159,10 +159,10 @@ public function testQueueSendingStrategies( new Message( 'test', null, - [FailureEnvelope::FAILURE_META_KEY => $metaInitial] + [FailureEnvelope::FAILURE_META_KEY => $metaInitial], ), new Exception('testException'), - $queue + $queue, ); $result = $strategy->processFailure($request, $handler); diff --git a/tests/Unit/Middleware/FailureHandling/InvalidMiddlewareDefinitionExceptionTest.php b/tests/Unit/Middleware/FailureHandling/InvalidMiddlewareDefinitionExceptionTest.php index 4eea3685..665e688b 100644 --- a/tests/Unit/Middleware/FailureHandling/InvalidMiddlewareDefinitionExceptionTest.php +++ b/tests/Unit/Middleware/FailureHandling/InvalidMiddlewareDefinitionExceptionTest.php @@ -55,7 +55,7 @@ public function testUnknownDefinition(mixed $definition): void $exception = new InvalidMiddlewareDefinitionException($definition); self::assertSame( 'Parameter should be either middleware class name or a callable.', - $exception->getMessage() + $exception->getMessage(), ); } } diff --git a/tests/Unit/Middleware/FailureHandling/MiddlewareDispatcherTest.php b/tests/Unit/Middleware/FailureHandling/MiddlewareDispatcherTest.php index 7bf1a141..044fa426 100644 --- a/tests/Unit/Middleware/FailureHandling/MiddlewareDispatcherTest.php +++ b/tests/Unit/Middleware/FailureHandling/MiddlewareDispatcherTest.php @@ -33,7 +33,7 @@ static function (FailureHandlingRequest $request): FailureHandlingRequest { return $request->withMessage(new Message('test', 'New closure test data')); }, ], - ] + ], ); $request = $dispatcher->dispatch($request, $this->getRequestHandler()); @@ -46,14 +46,14 @@ public function testArrayMiddlewareCallableDefinition(): void $container = $this->createContainer( [ TestCallableMiddleware::class => new TestCallableMiddleware(), - ] + ], ); $dispatcher = $this ->createDispatcher($container) ->withMiddlewares( [ FailureMiddlewareDispatcher::DEFAULT_PIPELINE => [[TestCallableMiddleware::class, 'index']], - ] + ], ); $request = $dispatcher->dispatch($request, $this->getRequestHandler()); $this->assertSame('New test data', $request->getMessage()->getData()); @@ -132,7 +132,7 @@ public function testResetStackOnWithMiddlewares(): void [ TestCallableMiddleware::class => new TestCallableMiddleware(), TestMiddleware::class => new TestMiddleware(), - ] + ], ); $dispatcher = $this @@ -148,7 +148,7 @@ public function testResetStackOnWithMiddlewares(): void private function getRequestHandler(): MessageFailureHandlerInterface { - return new class () implements MessageFailureHandlerInterface { + return new class implements MessageFailureHandlerInterface { public function handleFailure(FailureHandlingRequest $request): FailureHandlingRequest { return $request; @@ -175,7 +175,7 @@ private function getFailureHandlingRequest(): FailureHandlingRequest return new FailureHandlingRequest( new Message('handler', 'data'), new Exception('Test exception.'), - $this->createMock(QueueInterface::class) + $this->createMock(QueueInterface::class), ); } } diff --git a/tests/Unit/Middleware/FailureHandling/MiddlewareFactoryTest.php b/tests/Unit/Middleware/FailureHandling/MiddlewareFactoryTest.php index 445565d7..1b296a7e 100644 --- a/tests/Unit/Middleware/FailureHandling/MiddlewareFactoryTest.php +++ b/tests/Unit/Middleware/FailureHandling/MiddlewareFactoryTest.php @@ -42,7 +42,7 @@ public function testCreateCallableFromArray(): void 'New test data', $middleware->processFailure( $this->getConsumeRequest(), - $this->createMock(MessageFailureHandlerInterface::class) + $this->createMock(MessageFailureHandlerInterface::class), )->getMessage()->getData(), ); } @@ -57,14 +57,14 @@ function (): FailureHandlingRequest { new RuntimeException('test exception'), $this->createMock(QueueInterface::class), ); - } + }, ); self::assertSame( 'test data', $middleware->processFailure( $this->getConsumeRequest(), - $this->createMock(MessageFailureHandlerInterface::class) - )->getMessage()->getData() + $this->createMock(MessageFailureHandlerInterface::class), + )->getMessage()->getData(), ); } @@ -74,14 +74,14 @@ public function testCreateFromClosureMiddleware(): void $middleware = $this->getMiddlewareFactory($container)->createFailureMiddleware( static function (): MiddlewareFailureInterface { return new TestMiddleware(); - } + }, ); self::assertSame( 'New middleware test data', $middleware->processFailure( $this->getConsumeRequest(), - $this->createMock(MessageFailureHandlerInterface::class) - )->getMessage()->getData() + $this->createMock(MessageFailureHandlerInterface::class), + )->getMessage()->getData(), ); } @@ -94,8 +94,8 @@ public function testCreateWithUseParamsMiddleware(): void 'New middleware test data', $middleware->processFailure( $this->getConsumeRequest(), - $this->getRequestHandler() - )->getMessage()->getData() + $this->getRequestHandler(), + )->getMessage()->getData(), ); } @@ -103,7 +103,7 @@ public function testCreateWithTestCallableMiddleware(): void { $container = $this->getContainer([TestCallableMiddleware::class => new TestCallableMiddleware()]); $middleware = $this->getMiddlewareFactory($container)->createFailureMiddleware( - [TestCallableMiddleware::class, 'index'] + [TestCallableMiddleware::class, 'index'], ); $request = $this->getConsumeRequest(); @@ -111,8 +111,8 @@ public function testCreateWithTestCallableMiddleware(): void 'New test data', $middleware->processFailure( $request, - $this->getRequestHandler() - )->getMessage()->getData() + $this->getRequestHandler(), + )->getMessage()->getData(), ); } @@ -141,13 +141,13 @@ public function testInvalidMiddlewareWithWrongController(): void { $container = $this->getContainer([InvalidController::class => new InvalidController()]); $middleware = $this->getMiddlewareFactory($container)->createFailureMiddleware( - [InvalidController::class, 'index'] + [InvalidController::class, 'index'], ); $this->expectException(InvalidMiddlewareDefinitionException::class); $middleware->processFailure( $this->getConsumeRequest(), - $this->createMock(MessageFailureHandlerInterface::class) + $this->createMock(MessageFailureHandlerInterface::class), ); } @@ -165,7 +165,7 @@ private function getContainer(array $instances = []): ContainerInterface private function getRequestHandler(): MessageFailureHandlerInterface { - return new class () implements MessageFailureHandlerInterface { + return new class implements MessageFailureHandlerInterface { public function handleFailure(FailureHandlingRequest $request): FailureHandlingRequest { throw $request->getException(); @@ -178,7 +178,7 @@ private function getConsumeRequest(): FailureHandlingRequest return new FailureHandlingRequest( new Message('handler', 'data'), new Exception('test exception'), - $this->createMock(QueueInterface::class) + $this->createMock(QueueInterface::class), ); } } diff --git a/tests/Unit/Middleware/FailureHandling/Support/TestMiddleware.php b/tests/Unit/Middleware/FailureHandling/Support/TestMiddleware.php index f22a2755..c605fafd 100644 --- a/tests/Unit/Middleware/FailureHandling/Support/TestMiddleware.php +++ b/tests/Unit/Middleware/FailureHandling/Support/TestMiddleware.php @@ -11,9 +11,7 @@ final class TestMiddleware implements MiddlewareFailureInterface { - public function __construct(private readonly string $message = 'New middleware test data') - { - } + public function __construct(private readonly string $message = 'New middleware test data') {} public function processFailure(FailureHandlingRequest $request, MessageFailureHandlerInterface $handler): FailureHandlingRequest { diff --git a/tests/Unit/Middleware/Push/InvalidMiddlewareDefinitionExceptionTest.php b/tests/Unit/Middleware/Push/InvalidMiddlewareDefinitionExceptionTest.php index 9cb940cf..04f4838a 100644 --- a/tests/Unit/Middleware/Push/InvalidMiddlewareDefinitionExceptionTest.php +++ b/tests/Unit/Middleware/Push/InvalidMiddlewareDefinitionExceptionTest.php @@ -55,7 +55,7 @@ public function testUnknownDefinition(mixed $definition): void $exception = new InvalidMiddlewareDefinitionException($definition); self::assertSame( 'Parameter should be either middleware class name or a callable.', - $exception->getMessage() + $exception->getMessage(), ); } } diff --git a/tests/Unit/Middleware/Push/MiddlewareDispatcherTest.php b/tests/Unit/Middleware/Push/MiddlewareDispatcherTest.php index b7ddebe6..9be05b16 100644 --- a/tests/Unit/Middleware/Push/MiddlewareDispatcherTest.php +++ b/tests/Unit/Middleware/Push/MiddlewareDispatcherTest.php @@ -27,10 +27,10 @@ public function testCallableMiddlewareCalled(): void $dispatcher = $this->createDispatcher()->withMiddlewares( [ - static fn (PushRequest $request, AdapterInterface $adapter): PushRequest => $request + static fn(PushRequest $request, AdapterInterface $adapter): PushRequest => $request ->withMessage(new Message('test', 'New closure test data')) ->withAdapter($adapter->withChannel('closure-channel')), - ] + ], ); $request = $dispatcher->dispatch($request, $this->getRequestHandler()); @@ -48,7 +48,7 @@ public function testArrayMiddlewareCallableDefinition(): void $container = $this->createContainer( [ TestCallableMiddleware::class => new TestCallableMiddleware(), - ] + ], ); $dispatcher = $this->createDispatcher($container)->withMiddlewares([[TestCallableMiddleware::class, 'index']]); $request = $dispatcher->dispatch($request, $this->getRequestHandler()); @@ -103,8 +103,8 @@ public function testMiddlewareStackInterrupted(): void { $request = $this->getPushRequest(); - $middleware1 = static fn (PushRequest $request, MessageHandlerPushInterface $handler): PushRequest => $request->withMessage(new Message($request->getMessage()->getHandlerName(), 'first')); - $middleware2 = static fn (PushRequest $request, MessageHandlerPushInterface $handler): PushRequest => $request->withMessage(new Message($request->getMessage()->getHandlerName(), 'second')); + $middleware1 = static fn(PushRequest $request, MessageHandlerPushInterface $handler): PushRequest => $request->withMessage(new Message($request->getMessage()->getHandlerName(), 'first')); + $middleware2 = static fn(PushRequest $request, MessageHandlerPushInterface $handler): PushRequest => $request->withMessage(new Message($request->getMessage()->getHandlerName(), 'second')); $dispatcher = $this->createDispatcher()->withMiddlewares([$middleware1, $middleware2]); @@ -125,7 +125,7 @@ public function testHasMiddlewares(array $definitions, bool $expected): void { self::assertSame( $expected, - $this->createDispatcher()->withMiddlewares($definitions)->hasMiddlewares() + $this->createDispatcher()->withMiddlewares($definitions)->hasMiddlewares(), ); } @@ -142,7 +142,7 @@ public function testResetStackOnWithMiddlewares(): void [ TestCallableMiddleware::class => new TestCallableMiddleware(), TestMiddleware::class => new TestMiddleware(), - ] + ], ); $dispatcher = $this @@ -158,7 +158,7 @@ public function testResetStackOnWithMiddlewares(): void private function getRequestHandler(): MessageHandlerPushInterface { - return new class () implements MessageHandlerPushInterface { + return new class implements MessageHandlerPushInterface { public function handlePush(PushRequest $request): PushRequest { return $request; diff --git a/tests/Unit/Middleware/Push/MiddlewareFactoryTest.php b/tests/Unit/Middleware/Push/MiddlewareFactoryTest.php index 0b883149..c5cfcede 100644 --- a/tests/Unit/Middleware/Push/MiddlewareFactoryTest.php +++ b/tests/Unit/Middleware/Push/MiddlewareFactoryTest.php @@ -39,7 +39,7 @@ public function testCreateCallableFromArray(): void 'New test data', $middleware->processPush( $this->getPushRequest(), - $this->createMock(MessageHandlerPushInterface::class) + $this->createMock(MessageHandlerPushInterface::class), )->getMessage()->getData(), ); } @@ -50,14 +50,14 @@ public function testCreateFromClosureResponse(): void $middleware = $this->getMiddlewareFactory($container)->createPushMiddleware( static function (): PushRequest { return new PushRequest(new Message('test', 'test data'), new FakeAdapter()); - } + }, ); self::assertSame( 'test data', $middleware->processPush( $this->getPushRequest(), - $this->createMock(MessageHandlerPushInterface::class) - )->getMessage()->getData() + $this->createMock(MessageHandlerPushInterface::class), + )->getMessage()->getData(), ); } @@ -67,14 +67,14 @@ public function testCreateFromClosureMiddleware(): void $middleware = $this->getMiddlewareFactory($container)->createPushMiddleware( static function (): MiddlewarePushInterface { return new TestMiddleware(); - } + }, ); self::assertSame( 'New middleware test data', $middleware->processPush( $this->getPushRequest(), - $this->createMock(MessageHandlerPushInterface::class) - )->getMessage()->getData() + $this->createMock(MessageHandlerPushInterface::class), + )->getMessage()->getData(), ); } @@ -87,8 +87,8 @@ public function testCreateWithUseParamsMiddleware(): void 'New middleware test data', $middleware->processPush( $this->getPushRequest(), - $this->getRequestHandler() - )->getMessage()->getData() + $this->getRequestHandler(), + )->getMessage()->getData(), ); } @@ -102,8 +102,8 @@ public function testCreateWithTestCallableMiddleware(): void 'New test data', $middleware->processPush( $request, - $this->getRequestHandler() - )->getMessage()->getData() + $this->getRequestHandler(), + )->getMessage()->getData(), ); } @@ -132,13 +132,13 @@ public function testInvalidMiddlewareWithWrongController(): void { $container = $this->getContainer([InvalidController::class => new InvalidController()]); $middleware = $this->getMiddlewareFactory($container)->createPushMiddleware( - [InvalidController::class, 'index'] + [InvalidController::class, 'index'], ); $this->expectException(InvalidMiddlewareDefinitionException::class); $middleware->processPush( $this->getPushRequest(), - $this->createMock(MessageHandlerPushInterface::class) + $this->createMock(MessageHandlerPushInterface::class), ); } @@ -156,7 +156,7 @@ private function getContainer(array $instances = []): ContainerInterface private function getRequestHandler(): MessageHandlerPushInterface { - return new class () implements MessageHandlerPushInterface { + return new class implements MessageHandlerPushInterface { public function handlePush(PushRequest $request): PushRequest { return $request; diff --git a/tests/Unit/Middleware/Push/Support/TestMiddleware.php b/tests/Unit/Middleware/Push/Support/TestMiddleware.php index 5baf1d3b..3321c047 100644 --- a/tests/Unit/Middleware/Push/Support/TestMiddleware.php +++ b/tests/Unit/Middleware/Push/Support/TestMiddleware.php @@ -11,9 +11,7 @@ final class TestMiddleware implements MiddlewarePushInterface { - public function __construct(private readonly string $message = 'New middleware test data') - { - } + public function __construct(private readonly string $message = 'New middleware test data') {} public function processPush(PushRequest $request, MessageHandlerPushInterface $handler): PushRequest { diff --git a/tests/Unit/Provider/AdapterFactoryQueueProviderTest.php b/tests/Unit/Provider/AdapterFactoryQueueProviderTest.php index 68dedcae..50044f49 100644 --- a/tests/Unit/Provider/AdapterFactoryQueueProviderTest.php +++ b/tests/Unit/Provider/AdapterFactoryQueueProviderTest.php @@ -77,7 +77,7 @@ public function testInvalidQueueConfig(): void $this->expectException(InvalidQueueConfigException::class); $this->expectExceptionMessage( - 'Invalid definition: incorrect constructor arguments. Expected array, got string.' + 'Invalid definition: incorrect constructor arguments. Expected array, got string.', ); new AdapterFactoryQueueProvider($baseQueue, $definitions); } @@ -88,7 +88,7 @@ public function testInvalidQueueConfigOnGet(): void new StubQueue(), [ 'channel1' => StubLoop::class, - ] + ], ); $this->expectException(InvalidQueueConfigException::class); @@ -97,7 +97,7 @@ public function testInvalidQueueConfigOnGet(): void 'Adapter must implement "%s". For channel "channel1" got "%s" instead.', AdapterInterface::class, StubLoop::class, - ) + ), ); $provider->get('channel1'); } diff --git a/tests/Unit/Provider/CompositeQueueProviderTest.php b/tests/Unit/Provider/CompositeQueueProviderTest.php index d55fd600..2c2e5c39 100644 --- a/tests/Unit/Provider/CompositeQueueProviderTest.php +++ b/tests/Unit/Provider/CompositeQueueProviderTest.php @@ -40,7 +40,7 @@ public function testNotFound(): void $provider = new CompositeQueueProvider( new AdapterFactoryQueueProvider( new StubQueue(new StubAdapter()), - ['channel1' => new StubAdapter()] + ['channel1' => new StubAdapter()], ), ); diff --git a/tests/Unit/QueueTest.php b/tests/Unit/QueueTest.php index 5ff8f7b2..a3c5cc1d 100644 --- a/tests/Unit/QueueTest.php +++ b/tests/Unit/QueueTest.php @@ -13,6 +13,8 @@ use Yiisoft\Queue\Tests\TestCase; use Yiisoft\Queue\Message\IdEnvelope; +use function extension_loaded; + final class QueueTest extends TestCase { private bool $needsRealAdapter = true; @@ -24,11 +26,6 @@ protected function setUp(): void $this->needsRealAdapter = true; } - protected function needsRealAdapter(): bool - { - return $this->needsRealAdapter; - } - public function testPushSuccessful(): void { $adapter = new FakeAdapter(); @@ -165,4 +162,9 @@ public function testGetChannelWithoutAdapter(): void $this->expectException(AdapterNotConfiguredException::class); $queue->getChannel(); } + + protected function needsRealAdapter(): bool + { + return $this->needsRealAdapter; + } } diff --git a/tests/Unit/WorkerTest.php b/tests/Unit/WorkerTest.php index b8f466f6..5febf399 100644 --- a/tests/Unit/WorkerTest.php +++ b/tests/Unit/WorkerTest.php @@ -27,6 +27,7 @@ use Yiisoft\Queue\Tests\App\StaticMessageHandler; use Yiisoft\Queue\Tests\TestCase; use Yiisoft\Queue\Worker\Worker; +use PHPUnit\Framework\MockObject\MockObject; final class WorkerTest extends TestCase { @@ -38,7 +39,7 @@ public function testJobExecuted($handler, array $containerServices): void $container = new SimpleContainer($containerServices); $handlers = ['simple' => $handler]; - /** @var \PHPUnit\Framework\MockObject\MockObject&QueueInterface $queue */ + /** @var MockObject&QueueInterface $queue */ $queue = $this->createMock(QueueInterface::class); $worker = $this->createWorkerByParams($handlers, $container, $logger); @@ -89,7 +90,7 @@ public function testJobFailWithDefinitionUndefinedMethodHandler(): void $container = new SimpleContainer([FakeHandler::class => $handler]); $handlers = ['simple' => [FakeHandler::class, 'undefinedMethod']]; - /** @var \PHPUnit\Framework\MockObject\MockObject&QueueInterface $queue */ + /** @var MockObject&QueueInterface $queue */ $queue = $this->createMock(QueueInterface::class); $worker = $this->createWorkerByParams($handlers, $container); @@ -106,7 +107,7 @@ public function testJobFailWithDefinitionUndefinedClassHandler(): void $container = new SimpleContainer([FakeHandler::class => $handler]); $handlers = ['simple' => ['UndefinedClass', 'handle']]; - /** @var \PHPUnit\Framework\MockObject\MockObject&QueueInterface $queue */ + /** @var MockObject&QueueInterface $queue */ $queue = $this->createMock(QueueInterface::class); $worker = $this->createWorkerByParams($handlers, $container, $logger); @@ -126,7 +127,7 @@ public function testJobFailWithDefinitionClassNotFoundInContainerHandler(): void $container = new SimpleContainer(); $handlers = ['simple' => [FakeHandler::class, 'execute']]; - /** @var \PHPUnit\Framework\MockObject\MockObject&QueueInterface $queue */ + /** @var MockObject&QueueInterface $queue */ $queue = $this->createMock(QueueInterface::class); $worker = $this->createWorkerByParams($handlers, $container); @@ -141,7 +142,7 @@ public function testJobFailWithDefinitionHandlerException(): void $container = new SimpleContainer([FakeHandler::class => $handler]); $handlers = ['simple' => [FakeHandler::class, 'executeWithException']]; - /** @var \PHPUnit\Framework\MockObject\MockObject&QueueInterface $queue */ + /** @var MockObject&QueueInterface $queue */ $queue = $this->createMock(QueueInterface::class); $worker = $this->createWorkerByParams($handlers, $container, $logger); @@ -156,38 +157,18 @@ public function testJobFailWithDefinitionHandlerException(): void $this->assertNotEmpty($messages); $this->assertStringContainsString( "Processing of message #null is stopped because of an exception:\nTest exception.", - $messages[1]['message'] + $messages[1]['message'], ); } } - private function createWorkerByParams( - array $handlers, - ContainerInterface $container, - ?LoggerInterface $logger = null, - ): Worker { - /** @var MiddlewareFactoryConsumeInterface&\PHPUnit\Framework\MockObject\MockObject $consumeMiddlewareFactory */ - $consumeMiddlewareFactory = $this->createMock(MiddlewareFactoryConsumeInterface::class); - /** @var MiddlewareFactoryFailureInterface&\PHPUnit\Framework\MockObject\MockObject $failureMiddlewareFactory */ - $failureMiddlewareFactory = $this->createMock(MiddlewareFactoryFailureInterface::class); - - return new Worker( - $handlers, - $logger ?? new NullLogger(), - new Injector($container), - $container, - new ConsumeMiddlewareDispatcher($consumeMiddlewareFactory), - new FailureMiddlewareDispatcher($failureMiddlewareFactory, []), - ); - } - public function testHandlerNotFoundInContainer(): void { $message = new Message('nonexistent', ['test-data']); $container = new SimpleContainer(); $handlers = []; - /** @var \PHPUnit\Framework\MockObject\MockObject&QueueInterface $queue */ + /** @var MockObject&QueueInterface $queue */ $queue = $this->createMock(QueueInterface::class); $worker = $this->createWorkerByParams($handlers, $container); @@ -200,15 +181,13 @@ public function testHandlerInContainerNotImplementingInterface(): void { $message = new Message('invalid', ['test-data']); $container = new SimpleContainer([ - 'invalid' => new class () { - public function handle(): void - { - } + 'invalid' => new class { + public function handle(): void {} }, ]); $handlers = []; - /** @var \PHPUnit\Framework\MockObject\MockObject&QueueInterface $queue */ + /** @var MockObject&QueueInterface $queue */ $queue = $this->createMock(QueueInterface::class); $worker = $this->createWorkerByParams($handlers, $container); @@ -220,37 +199,37 @@ public function handle(): void public function testJobFailureIsHandledSuccessfully(): void { $message = new Message('simple', null); - /** @var \PHPUnit\Framework\MockObject\MockObject&QueueInterface $queue */ + /** @var MockObject&QueueInterface $queue */ $queue = $this->createMock(QueueInterface::class); $queue->method('getChannel')->willReturn('test-channel'); $originalException = new RuntimeException('Consume failed'); - /** @var MiddlewareConsumeInterface&\PHPUnit\Framework\MockObject\MockObject $consumeMiddleware */ + /** @var MiddlewareConsumeInterface&MockObject $consumeMiddleware */ $consumeMiddleware = $this->createMock(MiddlewareConsumeInterface::class); $consumeMiddleware->method('processConsume')->willThrowException($originalException); - /** @var MiddlewareFactoryConsumeInterface&\PHPUnit\Framework\MockObject\MockObject $consumeMiddlewareFactory */ + /** @var MiddlewareFactoryConsumeInterface&MockObject $consumeMiddlewareFactory */ $consumeMiddlewareFactory = $this->createMock(MiddlewareFactoryConsumeInterface::class); $consumeMiddlewareFactory->method('createConsumeMiddleware')->willReturn($consumeMiddleware); $consumeDispatcher = new ConsumeMiddlewareDispatcher($consumeMiddlewareFactory, 'simple'); $finalMessage = new Message('final', null); - /** @var MiddlewareFailureInterface&\PHPUnit\Framework\MockObject\MockObject $failureMiddleware */ + /** @var MiddlewareFailureInterface&MockObject $failureMiddleware */ $failureMiddleware = $this->createMock(MiddlewareFailureInterface::class); $failureMiddleware->method('processFailure')->willReturn(new FailureHandlingRequest($finalMessage, $originalException, $queue)); - /** @var MiddlewareFactoryFailureInterface&\PHPUnit\Framework\MockObject\MockObject $failureMiddlewareFactory */ + /** @var MiddlewareFactoryFailureInterface&MockObject $failureMiddlewareFactory */ $failureMiddlewareFactory = $this->createMock(MiddlewareFactoryFailureInterface::class); $failureMiddlewareFactory->method('createFailureMiddleware')->willReturn($failureMiddleware); $failureDispatcher = new FailureMiddlewareDispatcher($failureMiddlewareFactory, ['test-channel' => ['simple']]); $worker = new Worker( - ['simple' => fn () => null], + ['simple' => fn() => null], new NullLogger(), new Injector(new SimpleContainer()), new SimpleContainer(), $consumeDispatcher, - $failureDispatcher + $failureDispatcher, ); $result = $worker->process($message, $queue); @@ -266,7 +245,7 @@ public function testStaticMethodHandler(): void 'static-handler' => StaticMessageHandler::handle(...), ]; - /** @var \PHPUnit\Framework\MockObject\MockObject&QueueInterface $queue */ + /** @var MockObject&QueueInterface $queue */ $queue = $this->createMock(QueueInterface::class); $worker = $this->createWorkerByParams($handlers, $container); @@ -274,4 +253,24 @@ public function testStaticMethodHandler(): void $worker->process($message, $queue); $this->assertTrue(StaticMessageHandler::$wasHandled); } + + private function createWorkerByParams( + array $handlers, + ContainerInterface $container, + ?LoggerInterface $logger = null, + ): Worker { + /** @var MiddlewareFactoryConsumeInterface&MockObject $consumeMiddlewareFactory */ + $consumeMiddlewareFactory = $this->createMock(MiddlewareFactoryConsumeInterface::class); + /** @var MiddlewareFactoryFailureInterface&MockObject $failureMiddlewareFactory */ + $failureMiddlewareFactory = $this->createMock(MiddlewareFactoryFailureInterface::class); + + return new Worker( + $handlers, + $logger ?? new NullLogger(), + new Injector($container), + $container, + new ConsumeMiddlewareDispatcher($consumeMiddlewareFactory), + new FailureMiddlewareDispatcher($failureMiddlewareFactory, []), + ); + } }