From afb2bbdffbda15103cec9962cb15492002421bd4 Mon Sep 17 00:00:00 2001 From: Saksham Gorey <90107977+sakshamgorey@users.noreply.github.com> Date: Mon, 5 Jan 2026 22:59:52 +0530 Subject: [PATCH 1/4] feat: Add explicit 'reverb' support to TenancyBroadcastManager --- src/Overrides/TenancyBroadcastManager.php | 2 +- tests/BroadcastingTest.php | 28 +++++++++++++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/Overrides/TenancyBroadcastManager.php b/src/Overrides/TenancyBroadcastManager.php index 16e44a400..45812e8ea 100644 --- a/src/Overrides/TenancyBroadcastManager.php +++ b/src/Overrides/TenancyBroadcastManager.php @@ -18,7 +18,7 @@ class TenancyBroadcastManager extends BroadcastManager * The reason for recreating the broadcasters is * to make your app use the correct broadcaster credentials when tenancy is initialized. */ - public static array $tenantBroadcasters = ['pusher', 'ably']; + public static array $tenantBroadcasters = ['pusher', 'ably','reverb']; /** * Override the get method so that the broadcasters in $tenantBroadcasters diff --git a/tests/BroadcastingTest.php b/tests/BroadcastingTest.php index c3509426b..d48359935 100644 --- a/tests/BroadcastingTest.php +++ b/tests/BroadcastingTest.php @@ -23,14 +23,14 @@ beforeEach(function () { withTenantDatabases(); - TenancyBroadcastManager::$tenantBroadcasters = ['pusher', 'ably']; + TenancyBroadcastManager::$tenantBroadcasters = ['pusher', 'ably','reverb']; Event::listen(TenancyInitialized::class, BootstrapTenancy::class); Event::listen(TenancyEnded::class, RevertToCentralContext::class); }); afterEach(function () { - TenancyBroadcastManager::$tenantBroadcasters = ['pusher', 'ably']; + TenancyBroadcastManager::$tenantBroadcasters = ['pusher', 'ably','reverb']; }); test('bound broadcaster instance is the same before initializing tenancy and after ending it', function() { @@ -172,3 +172,27 @@ $foundChannelClosure = $getChannels()->first(fn ($closure, $name) => $name === 'global__' . $channelName); expect($foundChannelClosure)->not()->toBeNull(); }); + +test('reverb driver triggers tenant context binding', function() { + // Add reverb to the list of tenant broadcasters + \Stancl\Tenancy\Overrides\TenancyBroadcastManager::$tenantBroadcasters = ['pusher', 'ably', 'reverb']; + + $manager = new \Stancl\Tenancy\Overrides\TenancyBroadcastManager(app()); + + $manager->extend('reverb', function() { + return new \Stancl\Tenancy\Tests\Etc\TestingBroadcaster('tenant_instance'); + }); + + // Bind a "central" broadcaster to the container + $centralBroadcaster = new \Stancl\Tenancy\Tests\Etc\TestingBroadcaster('central_instance'); + app()->instance(\Illuminate\Contracts\Broadcasting\Broadcaster::class, $centralBroadcaster); + + // Resolve the reverb driver + $manager->driver('reverb'); + + $currentBroadcaster = app(\Illuminate\Contracts\Broadcasting\Broadcaster::class); + + // Assert the broadcaster instance was swapped + expect($currentBroadcaster)->not->toBe($centralBroadcaster); + expect($currentBroadcaster->message)->toBe('tenant_instance'); +}); \ No newline at end of file From 97f93eb5b123f468bca6b46edaea8e0a79bf5b07 Mon Sep 17 00:00:00 2001 From: Saksham Gorey <90107977+sakshamgorey@users.noreply.github.com> Date: Mon, 5 Jan 2026 23:32:15 +0530 Subject: [PATCH 2/4] style: Fix code style violations --- src/Overrides/TenancyBroadcastManager.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Overrides/TenancyBroadcastManager.php b/src/Overrides/TenancyBroadcastManager.php index 45812e8ea..51c497a45 100644 --- a/src/Overrides/TenancyBroadcastManager.php +++ b/src/Overrides/TenancyBroadcastManager.php @@ -18,7 +18,7 @@ class TenancyBroadcastManager extends BroadcastManager * The reason for recreating the broadcasters is * to make your app use the correct broadcaster credentials when tenancy is initialized. */ - public static array $tenantBroadcasters = ['pusher', 'ably','reverb']; + public static array $tenantBroadcasters = ['pusher', 'ably', 'reverb']; /** * Override the get method so that the broadcasters in $tenantBroadcasters From fe2191633e8e9ac9b49b0b116d1fc1d852f3b9ed Mon Sep 17 00:00:00 2001 From: Saksham Gorey <90107977+sakshamgorey@users.noreply.github.com> Date: Mon, 5 Jan 2026 23:45:52 +0530 Subject: [PATCH 3/4] test: Remove redundant setup in reverb test --- tests/BroadcastingTest.php | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/tests/BroadcastingTest.php b/tests/BroadcastingTest.php index d48359935..c51848d30 100644 --- a/tests/BroadcastingTest.php +++ b/tests/BroadcastingTest.php @@ -23,14 +23,14 @@ beforeEach(function () { withTenantDatabases(); - TenancyBroadcastManager::$tenantBroadcasters = ['pusher', 'ably','reverb']; + TenancyBroadcastManager::$tenantBroadcasters = ['pusher', 'ably', 'reverb']; Event::listen(TenancyInitialized::class, BootstrapTenancy::class); Event::listen(TenancyEnded::class, RevertToCentralContext::class); }); afterEach(function () { - TenancyBroadcastManager::$tenantBroadcasters = ['pusher', 'ably','reverb']; + TenancyBroadcastManager::$tenantBroadcasters = ['pusher', 'ably', 'reverb']; }); test('bound broadcaster instance is the same before initializing tenancy and after ending it', function() { @@ -174,9 +174,6 @@ }); test('reverb driver triggers tenant context binding', function() { - // Add reverb to the list of tenant broadcasters - \Stancl\Tenancy\Overrides\TenancyBroadcastManager::$tenantBroadcasters = ['pusher', 'ably', 'reverb']; - $manager = new \Stancl\Tenancy\Overrides\TenancyBroadcastManager(app()); $manager->extend('reverb', function() { From 06c28b311daeca9e45c8002f314ec939da4472ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20=C5=A0tancl?= Date: Wed, 14 Jan 2026 11:20:02 +0100 Subject: [PATCH 4/4] Add missing final new line --- tests/BroadcastingTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/BroadcastingTest.php b/tests/BroadcastingTest.php index c51848d30..3c008271f 100644 --- a/tests/BroadcastingTest.php +++ b/tests/BroadcastingTest.php @@ -192,4 +192,4 @@ // Assert the broadcaster instance was swapped expect($currentBroadcaster)->not->toBe($centralBroadcaster); expect($currentBroadcaster->message)->toBe('tenant_instance'); -}); \ No newline at end of file +});