1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
<?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
{
}
|