From 29d7ac5e44e706825a719532e81c8aee18f00030 Mon Sep 17 00:00:00 2001 From: Alexander Makarov Date: Thu, 9 Jul 2026 10:43:57 +0300 Subject: [PATCH 1/3] Update for queue message API changes --- src/Adapter.php | 2 +- src/ExistingMessagesConsumer.php | 2 +- tests/Benchmark/QueueConsumeBench.php | 7 +++--- tests/Benchmark/QueuePushBench.php | 9 +++---- .../ConsumeExistingMessagesTest.php | 11 +++++---- tests/Integration/DelayMiddlewareTest.php | 20 +++++++++------- .../Support/ExtendedSimpleMessageHandler.php | 2 +- tests/Support/FakeAdapter.php | 2 +- tests/Support/SimpleMessageHandler.php | 2 +- tests/Support/TestMessage.php | 24 +++++++++++-------- tests/Unit/DelayMiddlewareTest.php | 4 ++-- tests/Unit/QueueProviderTest.php | 11 +++++---- tests/Unit/QueueSettingsTest.php | 7 +++--- tests/Unit/QueueTest.php | 19 ++++++++------- tests/Unit/UnitTestCase.php | 7 +++--- tests/yii | 5 ++-- 16 files changed, 75 insertions(+), 59 deletions(-) diff --git a/src/Adapter.php b/src/Adapter.php index a9a968a..2c9b787 100644 --- a/src/Adapter.php +++ b/src/Adapter.php @@ -16,7 +16,7 @@ use Yiisoft\Queue\Cli\LoopInterface; use Yiisoft\Queue\Message\DelayEnvelope; use Yiisoft\Queue\Message\MessageInterface; -use Yiisoft\Queue\Message\MessageSerializerInterface; +use Yiisoft\Queue\Message\Serializer\MessageSerializerInterface; use Yiisoft\Queue\MessageStatus; final class Adapter implements AdapterInterface diff --git a/src/ExistingMessagesConsumer.php b/src/ExistingMessagesConsumer.php index 94239bf..16628f3 100644 --- a/src/ExistingMessagesConsumer.php +++ b/src/ExistingMessagesConsumer.php @@ -7,7 +7,7 @@ use PhpAmqpLib\Message\AMQPMessage; use Throwable; use Yiisoft\Queue\Message\MessageInterface; -use Yiisoft\Queue\Message\MessageSerializerInterface; +use Yiisoft\Queue\Message\Serializer\MessageSerializerInterface; /** * @internal diff --git a/tests/Benchmark/QueueConsumeBench.php b/tests/Benchmark/QueueConsumeBench.php index c0f4ccf..f5b6106 100644 --- a/tests/Benchmark/QueueConsumeBench.php +++ b/tests/Benchmark/QueueConsumeBench.php @@ -13,7 +13,8 @@ use Yiisoft\Queue\Amqp\QueueProvider; use Yiisoft\Queue\Amqp\Settings\Queue as QueueSettings; use Yiisoft\Queue\Cli\SimpleLoop; -use Yiisoft\Queue\Message\JsonMessageSerializer; +use Yiisoft\Queue\Message\Serializer\JsonMessageEncoder; +use Yiisoft\Queue\Message\Serializer\MessageSerializer; use Yiisoft\Queue\Amqp\Tests\Support\TestMessage as Message; #[BeforeClassMethods('cleanupQueue')] @@ -42,7 +43,7 @@ public function benchConsume(): void public function pushMessagesForConsume(): void { for ($i = 0; $i < self::MESSAGE_COUNT; $i++) { - $this->adapter->push(Message::fromData('test', ['payload' => 'test'])); + $this->adapter->push(Message::fromPayload('test', ['payload' => 'test'])); } } @@ -54,7 +55,7 @@ public static function cleanupQueue(): void private static function getAdapter(): Adapter { $loop = new SimpleLoop(); - $serializer = new JsonMessageSerializer(); + $serializer = new MessageSerializer(new JsonMessageEncoder()); $queueProvider = new QueueProvider( new AMQPStreamConnection( getenv('RABBITMQ_HOST'), diff --git a/tests/Benchmark/QueuePushBench.php b/tests/Benchmark/QueuePushBench.php index 41ec25d..9120462 100644 --- a/tests/Benchmark/QueuePushBench.php +++ b/tests/Benchmark/QueuePushBench.php @@ -15,7 +15,8 @@ use Yiisoft\Queue\Amqp\QueueProvider; use Yiisoft\Queue\Amqp\Settings\Queue as QueueSettings; use Yiisoft\Queue\Cli\SimpleLoop; -use Yiisoft\Queue\Message\JsonMessageSerializer; +use Yiisoft\Queue\Message\Serializer\JsonMessageEncoder; +use Yiisoft\Queue\Message\Serializer\MessageSerializer; use Yiisoft\Queue\Amqp\Tests\Support\TestMessage as Message; final class QueuePushBench @@ -27,7 +28,7 @@ final class QueuePushBench public function __construct() { $loop = new SimpleLoop(); - $serializer = new JsonMessageSerializer(); + $serializer = new MessageSerializer(new JsonMessageEncoder()); $queueProvider = new QueueProvider( new AMQPStreamConnection( getenv('RABBITMQ_HOST'), @@ -53,7 +54,7 @@ public function __construct() #[OutputTimeUnit('seconds')] public function benchPush(): void { - $this->adapter->push(Message::fromData('test', ['payload' => 'test'])); + $this->adapter->push(Message::fromPayload('test', ['payload' => 'test'])); } /** @@ -67,7 +68,7 @@ public function benchPush(): void #[OutputTimeUnit('seconds')] public function benchPushBatch(): void { - $message = Message::fromData('test', ['payload' => 'test']); + $message = Message::fromPayload('test', ['payload' => 'test']); for ($i = 0; $i < 100; $i++) { $this->adapter->push($message); } diff --git a/tests/Integration/ConsumeExistingMessagesTest.php b/tests/Integration/ConsumeExistingMessagesTest.php index 36623b4..29d9825 100644 --- a/tests/Integration/ConsumeExistingMessagesTest.php +++ b/tests/Integration/ConsumeExistingMessagesTest.php @@ -8,7 +8,8 @@ use Yiisoft\Queue\Amqp\QueueProvider; use Yiisoft\Queue\Amqp\Settings\Queue as QueueSettings; use Yiisoft\Queue\Cli\SimpleLoop; -use Yiisoft\Queue\Message\JsonMessageSerializer; +use Yiisoft\Queue\Message\Serializer\JsonMessageEncoder; +use Yiisoft\Queue\Message\Serializer\MessageSerializer; use Yiisoft\Queue\Amqp\Tests\Support\TestMessage as Message; use PhpAmqpLib\Connection\AMQPStreamConnection; @@ -17,7 +18,7 @@ class ConsumeExistingMessagesTest extends TestCase public function testConsumeExistingMessages(): void { $loop = new SimpleLoop(); - $serializer = new JsonMessageSerializer(); + $serializer = new MessageSerializer(new JsonMessageEncoder()); $queueProvider = new QueueProvider( new AMQPStreamConnection( getenv('RABBITMQ_HOST'), @@ -31,7 +32,7 @@ public function testConsumeExistingMessages(): void $messageCount = 10; for ($i = 0; $i < $messageCount; $i++) { - $adapter->push(Message::fromData('test', ['payload' => 'test'])); + $adapter->push(Message::fromPayload('test', ['payload' => 'test'])); } // wait for messages to be ready to consume @@ -49,7 +50,7 @@ public function testConsumeExistingMessages(): void public function testConsumeExistingMessagesByOne(): void { $loop = new SimpleLoop(); - $serializer = new JsonMessageSerializer(); + $serializer = new MessageSerializer(new JsonMessageEncoder()); $queueProvider = new QueueProvider( new AMQPStreamConnection( getenv('RABBITMQ_HOST'), @@ -63,7 +64,7 @@ public function testConsumeExistingMessagesByOne(): void $messageCount = 10; for ($i = 0; $i < $messageCount; $i++) { - $adapter->push(Message::fromData('test', ['payload' => 'test'])); + $adapter->push(Message::fromPayload('test', ['payload' => 'test'])); } // wait for messages to be ready to consume diff --git a/tests/Integration/DelayMiddlewareTest.php b/tests/Integration/DelayMiddlewareTest.php index 55fbc16..df6ff2d 100644 --- a/tests/Integration/DelayMiddlewareTest.php +++ b/tests/Integration/DelayMiddlewareTest.php @@ -16,11 +16,13 @@ use Yiisoft\Queue\Amqp\Tests\Support\FileHelper; use Yiisoft\Queue\Cli\LoopInterface; use Yiisoft\Queue\Cli\SignalLoop; -use Yiisoft\Queue\Message\JsonMessageSerializer; +use Yiisoft\Queue\Message\Serializer\JsonMessageEncoder; +use Yiisoft\Queue\Message\Serializer\MessageSerializer; use Yiisoft\Queue\Amqp\Tests\Support\TestMessage as Message; use Yiisoft\Queue\Middleware\CallableFactory; use Yiisoft\Queue\Middleware\Push\PushMiddlewareConfig; use Yiisoft\Queue\Middleware\Push\PushMiddlewareFactory; +use Yiisoft\Queue\Provider\QueueProviderInterface; use Yiisoft\Queue\Queue; use Yiisoft\Queue\Worker\WorkerInterface; use Yiisoft\Test\Support\Container\SimpleContainer; @@ -44,14 +46,14 @@ public function testMainFlow(): void new QueueSettings(), new ExchangeSettings('yii-queue'), ), - new JsonMessageSerializer(), + new MessageSerializer(new JsonMessageEncoder()), new SignalLoop(), ); - $queue = $this->makeQueue($adapter)->withMiddlewaresAdded(new DelayMiddleware(3)); + $queue = $this->makeQueue($adapter, new DelayMiddleware(3)); $time = time(); $queue->push( - Message::fromData('simple', 'test-delay-middleware-main'), + Message::fromPayload('simple', 'test-delay-middleware-main'), ); sleep(2); @@ -72,19 +74,19 @@ public function testMainFlowWithFakeAdapter(): void new QueueSettings(), new ExchangeSettings('yii-queue'), ), - new JsonMessageSerializer(), + new MessageSerializer(new JsonMessageEncoder()), new SignalLoop(), ); - $queue = $this->makeQueue($adapter)->withMiddlewaresAdded(new DelayMiddleware(3)); + $queue = $this->makeQueue($adapter, new DelayMiddleware(3)); $this->expectException(\LogicException::class); $this->expectExceptionMessage('Method not implemented'); $queue->push( - Message::fromData('simple', 'test-delay-middleware-main'), + Message::fromPayload('simple', 'test-delay-middleware-main'), ); } - private function makeQueue(AdapterInterface $adapter): Queue + private function makeQueue(AdapterInterface $adapter, mixed ...$middlewareDefinitions): Queue { return new Queue( $this->createMock(WorkerInterface::class), @@ -97,6 +99,8 @@ private function makeQueue(AdapterInterface $adapter): Queue ), ), $adapter, + QueueProviderInterface::DEFAULT_QUEUE, + ...$middlewareDefinitions, ); } } diff --git a/tests/Support/ExtendedSimpleMessageHandler.php b/tests/Support/ExtendedSimpleMessageHandler.php index 9674f6a..086f16e 100644 --- a/tests/Support/ExtendedSimpleMessageHandler.php +++ b/tests/Support/ExtendedSimpleMessageHandler.php @@ -17,7 +17,7 @@ public function __construct(private readonly FileHelper $fileHelper) public function handle(MessageInterface $message): void { - $data = $message->getData(); + $data = $message->getPayload(); if (null !== $data) { $this->fileHelper->put($data['file_name'], $data['payload']['time']); } diff --git a/tests/Support/FakeAdapter.php b/tests/Support/FakeAdapter.php index 5c61d7c..888240e 100644 --- a/tests/Support/FakeAdapter.php +++ b/tests/Support/FakeAdapter.php @@ -10,7 +10,7 @@ use Yiisoft\Queue\Amqp\QueueProviderInterface; use Yiisoft\Queue\Cli\LoopInterface; use Yiisoft\Queue\Message\MessageInterface; -use Yiisoft\Queue\Message\MessageSerializerInterface; +use Yiisoft\Queue\Message\Serializer\MessageSerializerInterface; use Yiisoft\Queue\MessageStatus; final class FakeAdapter implements AdapterInterface diff --git a/tests/Support/SimpleMessageHandler.php b/tests/Support/SimpleMessageHandler.php index c8c87f5..aa2181a 100644 --- a/tests/Support/SimpleMessageHandler.php +++ b/tests/Support/SimpleMessageHandler.php @@ -14,6 +14,6 @@ public function __construct(private readonly FileHelper $fileHelper) public function __invoke(MessageInterface $message): void { - $this->fileHelper->put($message->getData(), time()); + $this->fileHelper->put($message->getPayload(), time()); } } diff --git a/tests/Support/TestMessage.php b/tests/Support/TestMessage.php index a4097a6..87c9c64 100644 --- a/tests/Support/TestMessage.php +++ b/tests/Support/TestMessage.php @@ -8,16 +8,20 @@ final class TestMessage implements MessageInterface { + /** + * @param bool|int|float|string|array|null $payload + * @param array $meta + */ public function __construct( private readonly string $type, - private readonly mixed $data, - private readonly array $metadata = [], + private readonly bool|int|float|string|array|null $payload, + private readonly array $meta = [], ) { } - public static function fromData(string $type, mixed $data, array $metadata = []): self + public static function fromPayload(string $type, bool|int|float|string|array|null $payload): static { - return new self($type, $data, $metadata); + return new self($type, $payload); } public function getType(): string @@ -25,18 +29,18 @@ public function getType(): string return $this->type; } - public function getData(): mixed + public function getPayload(): bool|int|float|string|array|null { - return $this->data; + return $this->payload; } - public function getMetadata(): array + public function getMeta(): array { - return $this->metadata; + return $this->meta; } - public function withMetadata(array $metadata): static + public function withMeta(array $meta): static { - return new self($this->type, $this->data, $metadata); + return new self($this->type, $this->payload, $meta); } } diff --git a/tests/Unit/DelayMiddlewareTest.php b/tests/Unit/DelayMiddlewareTest.php index 1b972cd..ee9cd45 100644 --- a/tests/Unit/DelayMiddlewareTest.php +++ b/tests/Unit/DelayMiddlewareTest.php @@ -31,7 +31,7 @@ public function testImmutable(): void public function testProcessPushAddsDelayEnvelope(): void { - $message = Message::fromData('simple', null); + $message = Message::fromPayload('simple', null); $handler = new class () implements PushHandlerInterface { public function handlePush(MessageInterface $message): MessageInterface { @@ -47,7 +47,7 @@ public function handlePush(MessageInterface $message): MessageInterface public function testProcessPushSkipsNonPositiveDelay(): void { - $message = Message::fromData('simple', null); + $message = Message::fromPayload('simple', null); $handler = new class () implements PushHandlerInterface { public function handlePush(MessageInterface $message): MessageInterface { diff --git a/tests/Unit/QueueProviderTest.php b/tests/Unit/QueueProviderTest.php index 7f9fd23..81ffd6c 100644 --- a/tests/Unit/QueueProviderTest.php +++ b/tests/Unit/QueueProviderTest.php @@ -12,7 +12,8 @@ use Yiisoft\Queue\Amqp\Settings\Queue as QueueSettings; use Yiisoft\Queue\Amqp\Settings\QueueSettingsInterface; use Yiisoft\Queue\Amqp\Tests\Support\FileHelper; -use Yiisoft\Queue\Message\JsonMessageSerializer; +use Yiisoft\Queue\Message\Serializer\JsonMessageEncoder; +use Yiisoft\Queue\Message\Serializer\MessageSerializer; use Yiisoft\Queue\Amqp\Tests\Support\TestMessage as Message; final class QueueProviderTest extends UnitTestCase @@ -34,7 +35,7 @@ public function testWithQueueAndExchangeSettings(): void ->withExchangeSettings( new ExchangeSettings($this->exchangeName) ), - new JsonMessageSerializer(), + new MessageSerializer(new JsonMessageEncoder()), $this->getLoop(), ); @@ -43,7 +44,7 @@ public function testWithQueueAndExchangeSettings(): void $fileHelper = new FileHelper(); $time = time(); $queue->push( - Message::fromData('ext-simple', ['file_name' => 'test-with-queue-settings', 'payload' => ['time' => $time]]) + Message::fromPayload('ext-simple', ['file_name' => 'test-with-queue-settings', 'payload' => ['time' => $time]]) ); $message = $this @@ -61,7 +62,7 @@ public function testWithQueueAndExchangeSettings(): void self::assertEquals($time, $result); $messageBody = json_decode($message->getBody(), true, 512, JSON_THROW_ON_ERROR); - self::assertEquals($messageBody['data']['payload']['time'], $result); + self::assertEquals($messageBody['payload']['payload']['time'], $result); } public function testWithQueueNameExchangeDeclaredException(): void @@ -81,7 +82,7 @@ public function testWithQueueNameExchangeDeclaredException(): void new ExchangeSettings('yii-queue-test-with-queue-name') ) ->withQueueName('yii-queue-test-queue-name'), - new JsonMessageSerializer(), + new MessageSerializer(new JsonMessageEncoder()), $this->getLoop(), ); } diff --git a/tests/Unit/QueueSettingsTest.php b/tests/Unit/QueueSettingsTest.php index 3baddf4..15695be 100644 --- a/tests/Unit/QueueSettingsTest.php +++ b/tests/Unit/QueueSettingsTest.php @@ -11,7 +11,8 @@ use Yiisoft\Queue\Amqp\Settings\Exchange as ExchangeSettings; use Yiisoft\Queue\Amqp\Settings\QosSettings; use Yiisoft\Queue\Amqp\Settings\Queue as QueueSettings; -use Yiisoft\Queue\Message\JsonMessageSerializer; +use Yiisoft\Queue\Message\Serializer\JsonMessageEncoder; +use Yiisoft\Queue\Message\Serializer\MessageSerializer; use Yiisoft\Queue\Amqp\Tests\Support\TestMessage as Message; final class QueueSettingsTest extends UnitTestCase @@ -97,13 +98,13 @@ public function testArgumentsXExpires(): void ->withExchangeSettings( new ExchangeSettings('yii-queue-test-queue-settings-arg') ), - new JsonMessageSerializer(), + new MessageSerializer(new JsonMessageEncoder()), $this->getLoop(), ); $this->getQueueWithAdapter($adapter) ->push( - Message::fromData('ext-simple', ['payload' => time()]) + Message::fromPayload('ext-simple', ['payload' => time()]) ); sleep(2); diff --git a/tests/Unit/QueueTest.php b/tests/Unit/QueueTest.php index 7df9711..1b4239f 100644 --- a/tests/Unit/QueueTest.php +++ b/tests/Unit/QueueTest.php @@ -23,9 +23,10 @@ use Yiisoft\Queue\Exception\MessageFailureException; use Yiisoft\Queue\Message\DelayEnvelope; use Yiisoft\Queue\Message\IdEnvelope; -use Yiisoft\Queue\Message\JsonMessageSerializer; +use Yiisoft\Queue\Message\Serializer\JsonMessageEncoder; +use Yiisoft\Queue\Message\Serializer\MessageSerializer; use Yiisoft\Queue\Amqp\Tests\Support\TestMessage as Message; -use Yiisoft\Queue\Message\MessageSerializerInterface; +use Yiisoft\Queue\Message\Serializer\MessageSerializerInterface; use Yiisoft\Queue\Queue; final class QueueTest extends UnitTestCase @@ -42,7 +43,7 @@ public function testStatus(): void $queue = $this->getDefaultQueue($adapter); - $message = Message::fromData('ext-simple', null); + $message = Message::fromPayload('ext-simple', null); $queue->push( $message, ); @@ -67,7 +68,7 @@ public function testRun(): void $queue = $this->getDefaultQueue($this->getAdapter()); $queue->push( - Message::fromData('ext-simple', ['file_name' => $fileName, 'payload' => ['time' => $time]]) + Message::fromPayload('ext-simple', ['file_name' => $fileName, 'payload' => ['time' => $time]]) ); self::assertNull($fileHelper->get($fileName)); @@ -92,13 +93,13 @@ public function testListenWithException(): void $queueProvider ->withQueueSettings(new QueueSettings($this->queueName)) ->withExchangeSettings(new ExchangeSettings($this->exchangeName)), - new JsonMessageSerializer(), + new MessageSerializer(new JsonMessageEncoder()), $this->getLoop(), ); $queue = $this->getDefaultQueue($adapter); $time = time(); - $queue->push(Message::fromData('exception-listen', ['payload' => ['time' => $time]])); + $queue->push(Message::fromPayload('exception-listen', ['payload' => ['time' => $time]])); $this->expectException(MessageFailureException::class); @@ -120,13 +121,13 @@ public function testListen(): void $adapter = new Adapter( $queueProvider ->withQueueName('yii-queue'), - new JsonMessageSerializer(), + new MessageSerializer(new JsonMessageEncoder()), $mockLoop, ); $queue = $this->getDefaultQueue($adapter); $queue->push( - Message::fromData('ext-simple', ['file_name' => 'test-listen' . $time, 'payload' => ['time' => $time]]) + Message::fromPayload('ext-simple', ['file_name' => 'test-listen' . $time, 'payload' => ['time' => $time]]) ); $queue->listen(); } @@ -151,7 +152,7 @@ public function testImmutable(): void public function testPushUsesStringExpirationForDelayedMessage(): void { - $message = new DelayEnvelope(Message::fromData('ext-simple', null), 1.5); + $message = new DelayEnvelope(Message::fromPayload('ext-simple', null), 1.5); $exchangeSettings = new ExchangeSettings('test-exchange'); $queueSettings = new QueueSettings('test-queue'); $delayMessageProperties = [ diff --git a/tests/Unit/UnitTestCase.php b/tests/Unit/UnitTestCase.php index ea05623..7b487b6 100644 --- a/tests/Unit/UnitTestCase.php +++ b/tests/Unit/UnitTestCase.php @@ -17,7 +17,8 @@ use Yiisoft\Queue\Amqp\Tests\Support\MainTestCase; use Yiisoft\Queue\Cli\LoopInterface; use Yiisoft\Queue\Cli\SignalLoop; -use Yiisoft\Queue\Message\JsonMessageSerializer; +use Yiisoft\Queue\Message\Serializer\JsonMessageEncoder; +use Yiisoft\Queue\Message\Serializer\MessageSerializer; use Yiisoft\Queue\Message\MessageInterface; use Yiisoft\Queue\Middleware\CallableFactory; use Yiisoft\Queue\Middleware\Consume\ConsumeMiddlewareDispatcher; @@ -103,7 +104,7 @@ protected function getMessageHandlers(): array return [ 'ext-simple' => [new ExtendedSimpleMessageHandler(new FileHelper()), 'handle'], 'exception-listen' => static function (MessageInterface $message) { - $data = $message->getData(); + $data = $message->getPayload(); if (null !== $data) { throw new PHPUnitException((string) $data['payload']['time']); } @@ -146,7 +147,7 @@ protected function getAdapter(): AdapterInterface { return $this->adapter ??= new Adapter( $this->getQueueProvider(), - new JsonMessageSerializer(), + new MessageSerializer(new JsonMessageEncoder()), $this->getLoop(), ); } diff --git a/tests/yii b/tests/yii index cc19d3f..6662cce 100755 --- a/tests/yii +++ b/tests/yii @@ -14,7 +14,8 @@ use Yiisoft\Queue\Amqp\Tests\Support\SimpleMessageHandler; use Yiisoft\Queue\Cli\SignalLoop; use Yiisoft\Queue\Command\ListenCommand; use Yiisoft\Queue\Command\RunCommand; -use Yiisoft\Queue\Message\JsonMessageSerializer; +use Yiisoft\Queue\Message\Serializer\JsonMessageEncoder; +use Yiisoft\Queue\Message\Serializer\MessageSerializer; use Yiisoft\Queue\Middleware\CallableFactory; use Yiisoft\Queue\Middleware\Consume\ConsumeMiddlewareDispatcher; use Yiisoft\Queue\Middleware\Consume\ConsumeMiddlewareFactory; @@ -57,7 +58,7 @@ $adapter = new Adapter( new QueueSettings(queueName: QueueProviderInterface::DEFAULT_QUEUE), new ExchangeSettings(exchangeName: QueueProvider::EXCHANGE_NAME_DEFAULT), ), - new JsonMessageSerializer(), + new MessageSerializer(new JsonMessageEncoder()), $loop, ); $queue = new Queue( From 1e02fd993ecc0740d4f8644c072572d7547baef0 Mon Sep 17 00:00:00 2001 From: StyleCI Bot Date: Thu, 9 Jul 2026 07:44:42 +0000 Subject: [PATCH 2/3] Apply fixes from StyleCI --- tests/Support/TestMessage.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Support/TestMessage.php b/tests/Support/TestMessage.php index 87c9c64..9abe407 100644 --- a/tests/Support/TestMessage.php +++ b/tests/Support/TestMessage.php @@ -9,8 +9,8 @@ final class TestMessage implements MessageInterface { /** - * @param bool|int|float|string|array|null $payload - * @param array $meta + * @param array|bool|float|int|string|null $payload + * @param array $meta */ public function __construct( private readonly string $type, From fa8cf612e1ff29d6cf22eec386686bb571aeb496 Mon Sep 17 00:00:00 2001 From: Alexander Makarov Date: Thu, 9 Jul 2026 11:26:06 +0300 Subject: [PATCH 3/3] Address self-review findings --- tests/Support/ExtendedSimpleMessageHandler.php | 7 ++++++- tests/Support/SimpleMessageHandler.php | 5 ++++- tests/Unit/UnitTestCase.php | 6 +++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/tests/Support/ExtendedSimpleMessageHandler.php b/tests/Support/ExtendedSimpleMessageHandler.php index 086f16e..5bb3d60 100644 --- a/tests/Support/ExtendedSimpleMessageHandler.php +++ b/tests/Support/ExtendedSimpleMessageHandler.php @@ -18,7 +18,12 @@ public function __construct(private readonly FileHelper $fileHelper) public function handle(MessageInterface $message): void { $data = $message->getPayload(); - if (null !== $data) { + if ( + is_array($data) + && is_string($data['file_name'] ?? null) + && is_array($data['payload'] ?? null) + && (is_int($data['payload']['time'] ?? null) || is_string($data['payload']['time'] ?? null)) + ) { $this->fileHelper->put($data['file_name'], $data['payload']['time']); } } diff --git a/tests/Support/SimpleMessageHandler.php b/tests/Support/SimpleMessageHandler.php index aa2181a..f22a73a 100644 --- a/tests/Support/SimpleMessageHandler.php +++ b/tests/Support/SimpleMessageHandler.php @@ -14,6 +14,9 @@ public function __construct(private readonly FileHelper $fileHelper) public function __invoke(MessageInterface $message): void { - $this->fileHelper->put($message->getPayload(), time()); + $fileName = $message->getPayload(); + if (is_string($fileName)) { + $this->fileHelper->put($fileName, time()); + } } } diff --git a/tests/Unit/UnitTestCase.php b/tests/Unit/UnitTestCase.php index 7b487b6..e4008af 100644 --- a/tests/Unit/UnitTestCase.php +++ b/tests/Unit/UnitTestCase.php @@ -105,7 +105,11 @@ protected function getMessageHandlers(): array 'ext-simple' => [new ExtendedSimpleMessageHandler(new FileHelper()), 'handle'], 'exception-listen' => static function (MessageInterface $message) { $data = $message->getPayload(); - if (null !== $data) { + if ( + is_array($data) + && is_array($data['payload'] ?? null) + && (is_int($data['payload']['time'] ?? null) || is_string($data['payload']['time'] ?? null)) + ) { throw new PHPUnitException((string) $data['payload']['time']); } },