shouldReceive('push')->once(); return $mock; }); $dispatcher->dispatch(m::mock(ShouldQueue::class)); } public function testCommandsThatShouldQueueIsQueuedUsingCustomHandler() { $container = new Container; $dispatcher = new Dispatcher($container, function () { $mock = m::mock(Queue::class); $mock->shouldReceive('push')->once(); return $mock; }); $dispatcher->dispatch(new BusDispatcherTestCustomQueueCommand); } public function testCommandsThatShouldQueueIsQueuedUsingCustomQueueAndDelay() { $container = new Container; $dispatcher = new Dispatcher($container, function () { $mock = m::mock(Queue::class); $mock->shouldReceive('laterOn')->once()->with('foo', 10, m::type(BusDispatcherTestSpecificQueueAndDelayCommand::class)); return $mock; }); $dispatcher->dispatch(new BusDispatcherTestSpecificQueueAndDelayCommand); } public function testDispatchNowShouldNeverQueue() { $container = new Container; $mock = m::mock(Queue::class); $mock->shouldReceive('push')->never(); $dispatcher = new Dispatcher($container, function () use ($mock) { return $mock; }); $dispatcher->dispatch(new BusDispatcherBasicCommand); } public function testDispatcherCanDispatchStandAloneHandler() { $container = new Container; $mock = m::mock(Queue::class); $dispatcher = new Dispatcher($container, function () use ($mock) { return $mock; }); $dispatcher->map([StandAloneCommand::class => StandAloneHandler::class]); $response = $dispatcher->dispatch(new StandAloneCommand); $this->assertInstanceOf(StandAloneCommand::class, $response); } public function testOnConnectionOnJobWhenDispatching() { $container = new Container; $container->singleton('config', function () { return new Config([ 'queue' => [ 'default' => 'null', 'connections' => [ 'null' => ['driver' => 'null'], ], ], ]); }); $dispatcher = new Dispatcher($container, function () { $mock = m::mock(Queue::class); $mock->shouldReceive('push')->once(); return $mock; }); $job = (new ShouldNotBeDispatched)->onConnection('null'); $dispatcher->dispatch($job); } } class BusInjectionStub { // } class BusDispatcherBasicCommand { public $name; public function __construct($name = null) { $this->name = $name; } public function handle(BusInjectionStub $stub) { // } } class BusDispatcherTestCustomQueueCommand implements ShouldQueue { public function queue($queue, $command) { $queue->push($command); } } class BusDispatcherTestSpecificQueueAndDelayCommand implements ShouldQueue { public $queue = 'foo'; public $delay = 10; } class StandAloneCommand { // } class StandAloneHandler { public function handle(StandAloneCommand $command) { return $command; } } class ShouldNotBeDispatched implements ShouldQueue { use InteractsWithQueue, Queueable; public function handle() { throw new RuntimeException('This should not be run'); } }