mirror of
https://github.com/archtechx/tenancy.git
synced 2026-02-04 09:04:03 +00:00
feat: Add explicit 'reverb' support to TenancyBroadcastManager
This commit is contained in:
parent
e3701f1cc1
commit
afb2bbdffb
2 changed files with 27 additions and 3 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue