1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2026-02-04 19:34:04 +00:00

feat: Add explicit 'reverb' support to TenancyBroadcastManager

This commit is contained in:
Saksham Gorey 2026-01-05 22:59:52 +05:30
parent e3701f1cc1
commit afb2bbdffb
2 changed files with 27 additions and 3 deletions

View file

@ -23,14 +23,14 @@ use function Stancl\Tenancy\Tests\withTenantDatabases;
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 @@ test('broadcasting channel helpers register channels correctly', function() {
$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');
});