mirror of
https://github.com/archtechx/tenancy.git
synced 2026-08-06 09: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',
|
'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);
|
||||||
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue