1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2026-08-06 08:54:03 +00:00

Test that using broadcasters that only implement the Broadcaster contract (instead of the abstract class) don't break bootstrap()

Covers the `$centralBroadcaster instanceof Broadcaster && $tenantBroadcaster instanceof Broadcaster` check in extend(BroadcasterContract::class, ...)
This commit is contained in:
lukinovec 2026-07-12 12:40:31 +02:00
parent 0ba588d299
commit e6c4c317fe

View file

@ -318,3 +318,29 @@ test('mappings specified in credentialsMap override default mapPresets', functio
'ably', 'ably',
'reverb', 'reverb',
]); ]);
test('initializing tenancy does not fail when the broadcaster does not extend the abstract Broadcaster class', function () {
config([
'tenancy.bootstrappers' => [BroadcastingConfigBootstrapper::class],
'broadcasting.default' => 'contract',
'broadcasting.connections.contract.driver' => 'contract',
]);
$contractBroadcaster = new class implements BroadcasterContract {
public function auth($request) {}
public function validAuthenticationResponse($request, $result) {}
public function broadcast(array $channels, $event, array $payload = []) {}
};
app(BroadcastManager::class)->extend('contract', fn () => clone $contractBroadcaster);
$centralBroadcaster = app(BroadcasterContract::class);
// Channel auth closures only exist on broadcasters extending the abstract Broadcaster class,
// so the bootstrapper skips copying them instead of failing.
tenancy()->initialize(Tenant::create());
expect(app(BroadcasterContract::class))
->toBeInstanceOf(get_class($contractBroadcaster))
->not()->toBe($centralBroadcaster);
});