diff --git a/src/Illuminate/Queue/Console/Concerns/ParsesQueue.php b/src/Illuminate/Queue/Console/Concerns/ParsesQueue.php index 6842cec58e0c..c6fcfad08168 100644 --- a/src/Illuminate/Queue/Console/Concerns/ParsesQueue.php +++ b/src/Illuminate/Queue/Console/Concerns/ParsesQueue.php @@ -12,10 +12,11 @@ trait ParsesQueue */ protected function parseQueue($queue) { - [$connection, $queue] = array_pad(explode(':', $queue, 2), 2, null); + [$connection, $queue] = array_pad(explode(':', $queue, 2), -2, null); - return isset($queue) - ? [$connection, $queue] - : [$this->laravel['config']['queue.default'], $connection]; + return [ + $connection ?? $this->laravel['config']['queue.default'], + $queue ?: 'default', + ]; } } diff --git a/tests/Queue/QueuePauseResumeTest.php b/tests/Queue/QueuePauseResumeTest.php index fc52ca12463e..7c6224bf3ddb 100644 --- a/tests/Queue/QueuePauseResumeTest.php +++ b/tests/Queue/QueuePauseResumeTest.php @@ -4,6 +4,7 @@ use Illuminate\Cache\ArrayStore; use Illuminate\Cache\Repository; +use Illuminate\Queue\Console\Concerns\ParsesQueue; use Illuminate\Queue\QueueManager; use Mockery as m; use PHPUnit\Framework\TestCase; @@ -99,4 +100,26 @@ public function testResumingOnlyAffectsSpecificQueue() $this->assertFalse($this->manager->isPaused('redis', 'emails')); $this->assertTrue($this->manager->isPaused('redis', 'notifications')); } + + public function testParsingQueueString() + { + $parser = new class() + { + use ParsesQueue; + + private array $laravel = [ + 'config' => ['queue.default' => 'redis'], + ]; + + public function parse(string $queue) + { + return $this->parseQueue($queue); + } + }; + + $this->assertSame(['redis', 'default'], $parser->parse('')); + $this->assertSame(['redis', 'emails'], $parser->parse('emails')); + $this->assertSame(['database', 'notifications'], $parser->parse('database:notifications')); + $this->assertSame(['redis', 'foo:bar'], $parser->parse('redis:foo:bar')); + } }