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 64 65 66 67 68 69 70
|
<?php
declare(strict_types=1);
namespace Illuminate\Tests\Console\Scheduling;
use Illuminate\Console\Scheduling\EventMutex;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Console\Scheduling\SchedulingMutex;
use Illuminate\Container\Container;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Tests\Console\Fixtures\JobToTestWithSchedule;
use Mockery as m;
use Mockery\MockInterface;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\TestCase;
#[CoversClass(Schedule::class)]
final class ScheduleTest extends TestCase
{
private Container $container;
private EventMutex&MockInterface $eventMutex;
private SchedulingMutex&MockInterface $schedulingMutex;
protected function setUp(): void
{
parent::setUp();
$this->container = new Container;
Container::setInstance($this->container);
$this->eventMutex = m::mock(EventMutex::class);
$this->container->instance(EventMutex::class, $this->eventMutex);
$this->schedulingMutex = m::mock(SchedulingMutex::class);
$this->container->instance(SchedulingMutex::class, $this->schedulingMutex);
}
#[DataProvider('jobHonoursDisplayNameIfMethodExistsProvider')]
public function testJobHonoursDisplayNameIfMethodExists(object $job, string $jobName): void
{
$schedule = new Schedule();
$scheduledJob = $schedule->job($job);
self::assertSame($jobName, $scheduledJob->description);
self::assertFalse($this->container->resolved(JobToTestWithSchedule::class));
}
public static function jobHonoursDisplayNameIfMethodExistsProvider(): array
{
$job = new class implements ShouldQueue
{
public function displayName(): string
{
return 'testJob-123';
}
};
return [
[new JobToTestWithSchedule, JobToTestWithSchedule::class],
[$job, 'testJob-123'],
];
}
public function testJobIsNotInstantiatedIfSuppliedAsClassname(): void
{
$schedule = new Schedule();
$scheduledJob = $schedule->job(JobToTestWithSchedule::class);
self::assertSame(JobToTestWithSchedule::class, $scheduledJob->description);
self::assertFalse($this->container->resolved(JobToTestWithSchedule::class));
}
}
|