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:
parent
0ba588d299
commit
e6c4c317fe
1 changed files with 26 additions and 0 deletions
|
|
@ -318,3 +318,29 @@ test('mappings specified in credentialsMap override default mapPresets', functio
|
|||
'ably',
|
||||
'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);
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue