123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- <?php
- namespace Illuminate\Tests\Bus;
- use Illuminate\Bus\Dispatcher;
- use Illuminate\Bus\Queueable;
- use Illuminate\Config\Repository as Config;
- use Illuminate\Container\Container;
- use Illuminate\Contracts\Queue\Queue;
- use Illuminate\Contracts\Queue\ShouldQueue;
- use Illuminate\Queue\InteractsWithQueue;
- use Mockery as m;
- use PHPUnit\Framework\TestCase;
- use RuntimeException;
- class BusDispatcherTest extends TestCase
- {
- protected function tearDown(): void
- {
- m::close();
- }
- public function testCommandsThatShouldQueueIsQueued()
- {
- $container = new Container;
- $dispatcher = new Dispatcher($container, function () {
- $mock = m::mock(Queue::class);
- $mock->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');
- }
- }
|