From c0a66465ddc8803e7e053c1f1c67ad1c912cfccb Mon Sep 17 00:00:00 2001 From: WarLikeLaux Date: Sat, 6 Jun 2026 08:42:35 +0600 Subject: [PATCH 1/3] Add `hasStatusSupport()` to `Adapter` --- src/Adapter.php | 11 ++++++----- tests/Support/FakeAdapter.php | 7 ++++++- tests/Unit/QueueTest.php | 31 +++++++++++++++---------------- 3 files changed, 27 insertions(+), 22 deletions(-) diff --git a/src/Adapter.php b/src/Adapter.php index a9a968a..51d0569 100644 --- a/src/Adapter.php +++ b/src/Adapter.php @@ -10,7 +10,6 @@ use PhpAmqpLib\Message\AMQPMessage; use Throwable; use Yiisoft\Queue\Adapter\AdapterInterface; -use Yiisoft\Queue\Amqp\Exception\NotImplementedException; use Yiisoft\Queue\Amqp\Settings\ExchangeSettingsInterface; use Yiisoft\Queue\Amqp\Settings\QueueSettingsInterface; use Yiisoft\Queue\Cli\LoopInterface; @@ -46,12 +45,14 @@ public function runExisting(callable $handlerCallback): void (new ExistingMessagesConsumer($this->queueProvider, $this->serializer))->consume($handlerCallback); } - /** - * @return never - */ public function status(int|string $id): MessageStatus { - throw new NotImplementedException('Status check is not supported by the adapter ' . self::class . '.'); + return MessageStatus::NOT_FOUND; + } + + public function hasStatusSupport(): bool + { + return false; } public function push(MessageInterface $message): MessageInterface diff --git a/tests/Support/FakeAdapter.php b/tests/Support/FakeAdapter.php index 5c61d7c..037b274 100644 --- a/tests/Support/FakeAdapter.php +++ b/tests/Support/FakeAdapter.php @@ -29,7 +29,12 @@ public function runExisting(callable $handlerCallback): void public function status(int|string $id): MessageStatus { - throw new LogicException('Method not implemented'); + return MessageStatus::NOT_FOUND; + } + + public function hasStatusSupport(): bool + { + return false; } public function push(MessageInterface $message): MessageInterface diff --git a/tests/Unit/QueueTest.php b/tests/Unit/QueueTest.php index 7df9711..e3cb6eb 100644 --- a/tests/Unit/QueueTest.php +++ b/tests/Unit/QueueTest.php @@ -10,7 +10,6 @@ use PhpAmqpLib\Message\AMQPMessage; use Yiisoft\Queue\Adapter\AdapterInterface; use Yiisoft\Queue\Amqp\Adapter; -use Yiisoft\Queue\Amqp\Exception\NotImplementedException; use Yiisoft\Queue\Amqp\QueueProvider; use Yiisoft\Queue\Amqp\QueueProviderInterface; use Yiisoft\Queue\Amqp\Settings\Exchange as ExchangeSettings; @@ -22,34 +21,34 @@ use Yiisoft\Queue\Cli\LoopInterface; use Yiisoft\Queue\Exception\MessageFailureException; use Yiisoft\Queue\Message\DelayEnvelope; -use Yiisoft\Queue\Message\IdEnvelope; use Yiisoft\Queue\Message\JsonMessageSerializer; use Yiisoft\Queue\Amqp\Tests\Support\TestMessage as Message; use Yiisoft\Queue\Message\MessageSerializerInterface; +use Yiisoft\Queue\MessageStatus; use Yiisoft\Queue\Queue; final class QueueTest extends UnitTestCase { - /** - * Testing getting status - * - * @throws Exception - */ public function testStatus(): void { - $adapter = $this->getAdapter(); - $adapterClass = $adapter::class; + $adapter = new Adapter( + $this->createMock(QueueProviderInterface::class), + $this->createMock(MessageSerializerInterface::class), + $this->createMock(LoopInterface::class) + ); - $queue = $this->getDefaultQueue($adapter); + $this->assertSame(MessageStatus::NOT_FOUND, $adapter->status('any-id')); + } - $message = Message::fromData('ext-simple', null); - $queue->push( - $message, + public function testHasStatusSupport(): void + { + $adapter = new Adapter( + $this->createMock(QueueProviderInterface::class), + $this->createMock(MessageSerializerInterface::class), + $this->createMock(LoopInterface::class) ); - $this->expectException(NotImplementedException::class); - $this->expectExceptionMessage("Status check is not supported by the adapter $adapterClass."); - $adapter->status(IdEnvelope::fromMessage($message)->getId() ?? ''); + $this->assertFalse($adapter->hasStatusSupport()); } /** From e0ab883421fe74cae6306927b549a5b88ab0c9d4 Mon Sep 17 00:00:00 2001 From: WarLikeLaux Date: Mon, 8 Jun 2026 06:58:43 +0600 Subject: [PATCH 2/3] Use `getAdapter()` in adapter status tests --- tests/Unit/QueueTest.php | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/tests/Unit/QueueTest.php b/tests/Unit/QueueTest.php index e3cb6eb..02f409b 100644 --- a/tests/Unit/QueueTest.php +++ b/tests/Unit/QueueTest.php @@ -31,22 +31,14 @@ final class QueueTest extends UnitTestCase { public function testStatus(): void { - $adapter = new Adapter( - $this->createMock(QueueProviderInterface::class), - $this->createMock(MessageSerializerInterface::class), - $this->createMock(LoopInterface::class) - ); + $adapter = $this->getAdapter(); $this->assertSame(MessageStatus::NOT_FOUND, $adapter->status('any-id')); } public function testHasStatusSupport(): void { - $adapter = new Adapter( - $this->createMock(QueueProviderInterface::class), - $this->createMock(MessageSerializerInterface::class), - $this->createMock(LoopInterface::class) - ); + $adapter = $this->getAdapter(); $this->assertFalse($adapter->hasStatusSupport()); } From c1e015b9040e2b2f6b1990b247b2c8c77af92420 Mon Sep 17 00:00:00 2001 From: WarLikeLaux Date: Mon, 8 Jun 2026 07:05:15 +0600 Subject: [PATCH 3/3] Trigger CI