From fed0bff106f4b5937ef880fee24a35083ec4913b Mon Sep 17 00:00:00 2001 From: Wim Griffioen Date: Tue, 6 May 2025 11:03:07 +0200 Subject: [PATCH 1/2] Queue event listeners with enum values --- src/Illuminate/Events/Dispatcher.php | 5 +++-- tests/Events/QueuedEventsTest.php | 31 ++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/Illuminate/Events/Dispatcher.php b/src/Illuminate/Events/Dispatcher.php index ee409586efc8..12767cb2218d 100755 --- a/src/Illuminate/Events/Dispatcher.php +++ b/src/Illuminate/Events/Dispatcher.php @@ -20,6 +20,7 @@ use Illuminate\Support\Traits\Macroable; use Illuminate\Support\Traits\ReflectsClosures; use ReflectionClass; +use function Illuminate\Support\enum_value; class Dispatcher implements DispatcherContract { @@ -631,8 +632,8 @@ protected function queueHandler($class, $method, $arguments) : $listener->delay ?? null; is_null($delay) - ? $connection->pushOn($queue, $job) - : $connection->laterOn($queue, $delay, $job); + ? $connection->pushOn(enum_value($queue), $job) + : $connection->laterOn(enum_value($queue), $delay, $job); } /** diff --git a/tests/Events/QueuedEventsTest.php b/tests/Events/QueuedEventsTest.php index 9724a36bdbd2..145a6ad0365b 100644 --- a/tests/Events/QueuedEventsTest.php +++ b/tests/Events/QueuedEventsTest.php @@ -9,6 +9,7 @@ use Illuminate\Events\Dispatcher; use Illuminate\Queue\QueueManager; use Illuminate\Support\Testing\Fakes\QueueFake; +use Illuminate\Tests\Integration\Console\Events\ExampleQueueListener; use Mockery as m; use PHPUnit\Framework\TestCase; @@ -199,6 +200,23 @@ public function testQueuePropagateMiddleware() && $job->middleware[0]->b === 'bar'; }); } + + public function testDispatchesOnQueueDefinedWithEnum() + { + $d = new Dispatcher; + $queue = m::mock(Queue::class); + + $fakeQueue = new QueueFake(new Container); + + $d->setQueueResolver(function () use ($fakeQueue) { + return $fakeQueue; + }); + + $d->listen('some.event', TestDispatcherViaQueueSupportsEnum::class.'@handle'); + $d->dispatch('some.event', ['foo', 'bar']); + + $fakeQueue->assertPushedOn('enumerated-queue', CallQueuedListener::class); + } } class TestDispatcherQueuedHandler implements ShouldQueue @@ -367,3 +385,16 @@ public function withDelay($event) return 20; } } + +enum TestQueueType: string +{ + case EnumeratedQueue = 'enumerated-queue'; +} + +class TestDispatcherViaQueueSupportsEnum implements ShouldQueue +{ + public function viaQueue() + { + return TestQueueType::EnumeratedQueue; + } +} From 81a8eea10ff344dc9a8634bde26a683849a4719e Mon Sep 17 00:00:00 2001 From: Wim Griffioen Date: Tue, 6 May 2025 11:13:09 +0200 Subject: [PATCH 2/2] Apply code styling fixes --- src/Illuminate/Events/Dispatcher.php | 1 + tests/Events/QueuedEventsTest.php | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Illuminate/Events/Dispatcher.php b/src/Illuminate/Events/Dispatcher.php index 12767cb2218d..c49a49d30ad7 100755 --- a/src/Illuminate/Events/Dispatcher.php +++ b/src/Illuminate/Events/Dispatcher.php @@ -20,6 +20,7 @@ use Illuminate\Support\Traits\Macroable; use Illuminate\Support\Traits\ReflectsClosures; use ReflectionClass; + use function Illuminate\Support\enum_value; class Dispatcher implements DispatcherContract diff --git a/tests/Events/QueuedEventsTest.php b/tests/Events/QueuedEventsTest.php index 145a6ad0365b..4f9ec170ba1f 100644 --- a/tests/Events/QueuedEventsTest.php +++ b/tests/Events/QueuedEventsTest.php @@ -9,7 +9,6 @@ use Illuminate\Events\Dispatcher; use Illuminate\Queue\QueueManager; use Illuminate\Support\Testing\Fakes\QueueFake; -use Illuminate\Tests\Integration\Console\Events\ExampleQueueListener; use Mockery as m; use PHPUnit\Framework\TestCase;