From 2641fae3a3be438c3949c4886cb62dfb6705e4ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20=C5=A0tancl?= Date: Thu, 17 Oct 2019 18:55:39 +0200 Subject: [PATCH] Central queues --- .../QueueTenancyBootstrapper.php | 10 +++++++--- tests/QueueTest.php | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/TenancyBootstrappers/QueueTenancyBootstrapper.php b/src/TenancyBootstrappers/QueueTenancyBootstrapper.php index d37f9426..9568d8bf 100644 --- a/src/TenancyBootstrappers/QueueTenancyBootstrapper.php +++ b/src/TenancyBootstrappers/QueueTenancyBootstrapper.php @@ -25,8 +25,8 @@ class QueueTenancyBootstrapper implements TenancyBootstrapper $queue = $this->app['queue']; if (! $queue instanceof QueueFake) { - $queue->createPayloadUsing(function () use (&$bootstrapper) { - return $bootstrapper->getPayload(); + $queue->createPayloadUsing(function ($connection) use (&$bootstrapper) { + return $bootstrapper->getPayload($connection); }); } } @@ -41,12 +41,16 @@ class QueueTenancyBootstrapper implements TenancyBootstrapper $this->started = false; } - public function getPayload() + public function getPayload(string $connection) { if (! $this->started) { return []; } + if ($this->app['config']["queue.connections.$connection.tenancy"] === false) { + return []; + } + $id = tenant('id'); return [ diff --git a/tests/QueueTest.php b/tests/QueueTest.php index 7d24fdc3..50bdf1b2 100644 --- a/tests/QueueTest.php +++ b/tests/QueueTest.php @@ -33,6 +33,24 @@ class QueueTest extends TestCase return $event->job->payload()['tenant_id'] === tenant('id'); }); } + + /** @test */ + public function tenancy_is_not_initialized_in_non_tenant_queues() + { + $this->loadLaravelMigrations(['--database' => 'tenant']); + Event::fake(); + + config(['queue.connections.central' => [ + 'driver' => 'sync', + 'tenancy' => false, + ]]); + + dispatch(new TestJob())->onConnection('central'); + + Event::assertDispatched(JobProcessing::class, function ($event) { + return ! isset($event->job->payload()['tenant_id']); + }); + } } class TestJob implements ShouldQueue