forked from laravel/framework
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name of job set by displayName() must be honoured by Schedule (larave…
- Loading branch information
Showing
3 changed files
with
90 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Illuminate\Tests\Console\Fixtures; | ||
|
||
use Illuminate\Contracts\Queue\ShouldQueue; | ||
|
||
final class JobToTestWithSchedule implements ShouldQueue | ||
{ | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,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)); | ||
} | ||
} |