Skip to content

Commit e333cc8

Browse files
authored
[12.x] Queue event listeners with enum values (#55656)
* Queue event listeners with enum values * Apply code styling fixes
1 parent cbe68cc commit e333cc8

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

src/Illuminate/Events/Dispatcher.php

+4-2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
use Illuminate\Support\Traits\ReflectsClosures;
2222
use ReflectionClass;
2323

24+
use function Illuminate\Support\enum_value;
25+
2426
class Dispatcher implements DispatcherContract
2527
{
2628
use Macroable, ReflectsClosures;
@@ -631,8 +633,8 @@ protected function queueHandler($class, $method, $arguments)
631633
: $listener->delay ?? null;
632634

633635
is_null($delay)
634-
? $connection->pushOn($queue, $job)
635-
: $connection->laterOn($queue, $delay, $job);
636+
? $connection->pushOn(enum_value($queue), $job)
637+
: $connection->laterOn(enum_value($queue), $delay, $job);
636638
}
637639

638640
/**

tests/Events/QueuedEventsTest.php

+30
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,23 @@ public function testQueuePropagateMiddleware()
199199
&& $job->middleware[0]->b === 'bar';
200200
});
201201
}
202+
203+
public function testDispatchesOnQueueDefinedWithEnum()
204+
{
205+
$d = new Dispatcher;
206+
$queue = m::mock(Queue::class);
207+
208+
$fakeQueue = new QueueFake(new Container);
209+
210+
$d->setQueueResolver(function () use ($fakeQueue) {
211+
return $fakeQueue;
212+
});
213+
214+
$d->listen('some.event', TestDispatcherViaQueueSupportsEnum::class.'@handle');
215+
$d->dispatch('some.event', ['foo', 'bar']);
216+
217+
$fakeQueue->assertPushedOn('enumerated-queue', CallQueuedListener::class);
218+
}
202219
}
203220

204221
class TestDispatcherQueuedHandler implements ShouldQueue
@@ -367,3 +384,16 @@ public function withDelay($event)
367384
return 20;
368385
}
369386
}
387+
388+
enum TestQueueType: string
389+
{
390+
case EnumeratedQueue = 'enumerated-queue';
391+
}
392+
393+
class TestDispatcherViaQueueSupportsEnum implements ShouldQueue
394+
{
395+
public function viaQueue()
396+
{
397+
return TestQueueType::EnumeratedQueue;
398+
}
399+
}

0 commit comments

Comments
 (0)