123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- <?php
- namespace Illuminate\Tests\Integration\Console;
- use Illuminate\Bus\Queueable;
- use Illuminate\Console\Scheduling\Schedule;
- use Illuminate\Contracts\Queue\ShouldBeUnique;
- use Illuminate\Contracts\Queue\ShouldQueue;
- use Illuminate\Foundation\Bus\Dispatchable;
- use Illuminate\Queue\InteractsWithQueue;
- use Illuminate\Support\Facades\Queue;
- use Orchestra\Testbench\TestCase;
- class UniqueJobSchedulingTest extends TestCase
- {
- public function testJobsPushedToQueue()
- {
- Queue::fake();
- $this->dispatch(
- TestJob::class,
- TestJob::class,
- TestJob::class,
- TestJob::class
- );
- Queue::assertPushed(TestJob::class, 4);
- }
- public function testUniqueJobsPushedToQueue()
- {
- Queue::fake();
- $this->dispatch(
- UniqueTestJob::class,
- UniqueTestJob::class,
- UniqueTestJob::class,
- UniqueTestJob::class
- );
- Queue::assertPushed(UniqueTestJob::class, 1);
- }
- private function dispatch(...$jobs)
- {
- /** @var \Illuminate\Console\Scheduling\Schedule $scheduler */
- $scheduler = $this->app->make(Schedule::class);
- foreach ($jobs as $job) {
- $scheduler->job($job)->name('')->everyMinute();
- }
- $events = $scheduler->events();
- foreach ($events as $event) {
- $event->run($this->app);
- }
- }
- }
- class TestJob implements ShouldQueue
- {
- use InteractsWithQueue, Queueable, Dispatchable;
- }
- class UniqueTestJob extends TestJob implements ShouldBeUnique
- {
- }
|