From 2407c9b86cda499eb2eedb9d19510cb4554fae1c Mon Sep 17 00:00:00 2001 From: Andrej Mihaliak Date: Tue, 6 Dec 2022 15:38:34 +0100 Subject: [PATCH 1/2] Allow BusFake to use custom BusRepository --- src/Illuminate/Support/Facades/Bus.php | 5 +++-- src/Illuminate/Support/Testing/Fakes/BusFake.php | 6 ++++-- tests/Support/SupportTestingBusFakeTest.php | 15 +++++++++++++++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/Illuminate/Support/Facades/Bus.php b/src/Illuminate/Support/Facades/Bus.php index 9d6352a4692f..4ec733d4db53 100644 --- a/src/Illuminate/Support/Facades/Bus.php +++ b/src/Illuminate/Support/Facades/Bus.php @@ -2,6 +2,7 @@ namespace Illuminate\Support\Facades; +use Illuminate\Bus\BatchRepository; use Illuminate\Contracts\Bus\Dispatcher as BusDispatcherContract; use Illuminate\Foundation\Bus\PendingChain; use Illuminate\Support\Testing\Fakes\BusFake; @@ -44,9 +45,9 @@ class Bus extends Facade * @param array|string $jobsToFake * @return \Illuminate\Support\Testing\Fakes\BusFake */ - public static function fake($jobsToFake = []) + public static function fake($jobsToFake = [], BatchRepository $batchRepository = null) { - static::swap($fake = new BusFake(static::getFacadeRoot(), $jobsToFake)); + static::swap($fake = new BusFake(static::getFacadeRoot(), $jobsToFake, $batchRepository)); return $fake; } diff --git a/src/Illuminate/Support/Testing/Fakes/BusFake.php b/src/Illuminate/Support/Testing/Fakes/BusFake.php index 0c9f0618052d..900edf23f486 100644 --- a/src/Illuminate/Support/Testing/Fakes/BusFake.php +++ b/src/Illuminate/Support/Testing/Fakes/BusFake.php @@ -3,6 +3,7 @@ namespace Illuminate\Support\Testing\Fakes; use Closure; +use Illuminate\Bus\BatchRepository; use Illuminate\Bus\PendingBatch; use Illuminate\Contracts\Bus\QueueingDispatcher; use Illuminate\Support\Arr; @@ -75,13 +76,14 @@ class BusFake implements QueueingDispatcher * * @param \Illuminate\Contracts\Bus\QueueingDispatcher $dispatcher * @param array|string $jobsToFake + * @param BatchRepository|null $jobsToFake * @return void */ - public function __construct(QueueingDispatcher $dispatcher, $jobsToFake = []) + public function __construct(QueueingDispatcher $dispatcher, $jobsToFake = [], BatchRepository $batchRepository = null) { $this->dispatcher = $dispatcher; $this->jobsToFake = Arr::wrap($jobsToFake); - $this->batchRepository = new BatchRepositoryFake; + $this->batchRepository = $batchRepository ?: new BatchRepositoryFake; } /** diff --git a/tests/Support/SupportTestingBusFakeTest.php b/tests/Support/SupportTestingBusFakeTest.php index 600de62b6544..9b70ddd2bc02 100644 --- a/tests/Support/SupportTestingBusFakeTest.php +++ b/tests/Support/SupportTestingBusFakeTest.php @@ -5,6 +5,7 @@ use Illuminate\Bus\Batch; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Bus\QueueingDispatcher; +use Illuminate\Support\Testing\Fakes\BatchRepositoryFake; use Illuminate\Support\Testing\Fakes\BusFake; use Mockery as m; use PHPUnit\Framework\Constraint\ExceptionMessage; @@ -28,6 +29,20 @@ protected function tearDown(): void m::close(); } + public function testItUsesCustomBusRepository() + { + $busRepository = new BatchRepositoryFake; + + $fake = new BusFake(m::mock(QueueingDispatcher::class), [], $busRepository); + + $this->assertNull($fake->findBatch('non-existent-batch')); + + $batch = $fake->batch([])->dispatch(); + + $this->assertSame($batch, $fake->findBatch($batch->id)); + $this->assertSame($batch, $busRepository->find($batch->id)); + } + public function testAssertDispatched() { try { From 8ec69f85f90433d15c1afbbd7329700fe601635e Mon Sep 17 00:00:00 2001 From: Andrej Mihaliak Date: Wed, 7 Dec 2022 08:32:59 +0100 Subject: [PATCH 2/2] Add missing docblock --- src/Illuminate/Support/Facades/Bus.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Illuminate/Support/Facades/Bus.php b/src/Illuminate/Support/Facades/Bus.php index 4ec733d4db53..fcee13b61a28 100644 --- a/src/Illuminate/Support/Facades/Bus.php +++ b/src/Illuminate/Support/Facades/Bus.php @@ -43,6 +43,7 @@ class Bus extends Facade * Replace the bound instance with a fake. * * @param array|string $jobsToFake + * @param \Illuminate\Bus\BatchRepository|null $batchRepository * @return \Illuminate\Support\Testing\Fakes\BusFake */ public static function fake($jobsToFake = [], BatchRepository $batchRepository = null)