From aa2fcdf9bcd5fe9d38246ae1edfdd26e6f46399e Mon Sep 17 00:00:00 2001 From: lukinovec Date: Wed, 14 Dec 2022 12:00:32 +0100 Subject: [PATCH] Clean up BootstrapperTest --- tests/BootstrapperTest.php | 73 +------------------------------- tests/BroadcastingTest.php | 63 +++++++++++++++++++++++++++ tests/Etc/TestingBroadcaster.php | 25 +++++++++++ 3 files changed, 90 insertions(+), 71 deletions(-) create mode 100644 tests/BroadcastingTest.php create mode 100644 tests/Etc/TestingBroadcaster.php diff --git a/tests/BootstrapperTest.php b/tests/BootstrapperTest.php index a8c9827d..e1d475f0 100644 --- a/tests/BootstrapperTest.php +++ b/tests/BootstrapperTest.php @@ -2,7 +2,6 @@ declare(strict_types=1); -use Illuminate\Broadcasting\Broadcasters\Broadcaster; use Illuminate\Support\Str; use Illuminate\Support\Facades\DB; use Stancl\JobPipeline\JobPipeline; @@ -20,12 +19,11 @@ use Stancl\Tenancy\Events\DeletingTenant; use Stancl\Tenancy\TenancyBroadcastManager; use Illuminate\Filesystem\FilesystemAdapter; use Illuminate\Broadcasting\BroadcastManager; -use Illuminate\Contracts\Broadcasting\Broadcaster as BroadcasterContract; -use Illuminate\Support\Facades\Broadcast; use Stancl\Tenancy\Events\TenancyInitialized; use Stancl\Tenancy\Jobs\CreateStorageSymlinks; use Stancl\Tenancy\Jobs\RemoveStorageSymlinks; use Stancl\Tenancy\Listeners\BootstrapTenancy; +use Stancl\Tenancy\Tests\Etc\TestingBroadcaster; use Stancl\Tenancy\Listeners\DeleteTenantStorage; use Stancl\Tenancy\Listeners\RevertToCentralContext; use Stancl\Tenancy\Bootstrappers\CacheTenancyBootstrapper; @@ -344,22 +342,6 @@ test('BroadcastTenancyBootstrapper binds TenancyBroadcastManager to BroadcastMan expect(app(BroadcastManager::class))->toBeInstanceOf(BroadcastManager::class); }); -test('bound broadcaster instance is the same before initializing tenancy and after ending it', function() { - config(['broadcasting.default' => 'null']); - TenancyBroadcastManager::$tenantBroadcasters[] = 'null'; - - $originalBroadcaster = app(BroadcasterContract::class); - - tenancy()->initialize(Tenant::create()); - - // TenancyBroadcastManager binds new broadcaster - app(BroadcastManager::class)->driver(); - - tenancy()->end(); - - expect($originalBroadcaster)->toBe(app(BroadcasterContract::class)); -}); - test('BroadcastTenancyBootstrapper maps tenant broadcaster credentials to config as specified in the $credentialsMap property and reverts the config after ending tenancy', function() { config([ 'broadcasting.connections.testing.driver' => 'testing', @@ -387,7 +369,7 @@ test('BroadcastTenancyBootstrapper maps tenant broadcaster credentials to config expect(config('broadcasting.connections.testing.message'))->toBe($defaultMessage); }); -test('broadcasters are created with the correct credentials', function() { +test('BroadcastTenancyBootstrapper makes the app use broadcasters with the correct credentials', function() { config([ 'broadcasting.default' => 'testing', 'broadcasting.connections.testing.driver' => 'testing', @@ -424,37 +406,6 @@ test('broadcasters are created with the correct credentials', function() { expect(invade(app(BroadcastManager::class)->driver())->message)->toBe($defaultMessage); }); -test('new broadcasters get the channels from the previously bound broadcaster', function() { - config([ - 'broadcasting.default' => $driver = 'testing', - 'broadcasting.connections.testing.driver' => $driver, - 'broadcasting.connections.testing.message' => $defaultMessage = 'default', - ]); - - TenancyBroadcastManager::$tenantBroadcasters[] = $driver; - BroadcastTenancyBootstrapper::$credentialsMap = [ - 'broadcasting.connections.testing.message' => 'testing_broadcaster_message', - ]; - - $registerTestingBroadcaster = fn() => app(BroadcastManager::class)->extend('testing', fn($app, $config) => new TestingBroadcaster($config['message'])); - $getCurrentChannels = fn() => array_keys(invade(app(BroadcastManager::class)->driver())->channels); - - $registerTestingBroadcaster(); - Broadcast::channel($channel = 'testing-channel', fn() => true); - - expect($channel)->toBeIn($getCurrentChannels()); - - tenancy()->initialize(Tenant::create()); - $registerTestingBroadcaster(); - - expect($channel)->toBeIn($getCurrentChannels()); - - tenancy()->end(); - $registerTestingBroadcaster(); - - expect($channel)->toBeIn($getCurrentChannels()); -}); - function getDiskPrefix(string $disk): string { /** @var FilesystemAdapter $disk */ @@ -472,23 +423,3 @@ function getDiskPrefix(string $disk): string return $prefix->getValue($prefixer); } - -class TestingBroadcaster extends Broadcaster { - public function __construct( - public string $message - ) {} - - public function auth($request) - { - return true; - } - - public function validAuthenticationResponse($request, $result) - { - return true; - } - - public function broadcast(array $channels, $event, array $payload = []) - { - } -} diff --git a/tests/BroadcastingTest.php b/tests/BroadcastingTest.php new file mode 100644 index 00000000..a4819ae2 --- /dev/null +++ b/tests/BroadcastingTest.php @@ -0,0 +1,63 @@ + 'testing']); + TenancyBroadcastManager::$tenantBroadcasters[] = 'testing'; + + $originalBroadcaster = app(BroadcasterContract::class); + + tenancy()->initialize(Tenant::create()); + + // TenancyBroadcastManager binds new broadcaster + app(BroadcastManager::class)->driver(); + + tenancy()->end(); + + expect($originalBroadcaster)->toBe(app(BroadcasterContract::class)); +}); + +test('new broadcasters get the channels from the previously bound broadcaster', function() { + config([ + 'broadcasting.default' => $driver = 'testing', + 'broadcasting.connections.testing.driver' => $driver, + ]); + + TenancyBroadcastManager::$tenantBroadcasters[] = $driver; + + $registerTestingBroadcaster = fn() => app(BroadcastManager::class)->extend('testing', fn($app, $config) => new TestingBroadcaster($config['message'])); + $getCurrentChannels = fn() => array_keys(invade(app(BroadcastManager::class)->driver())->channels); + + $registerTestingBroadcaster(); + Broadcast::channel($channel = 'testing-channel', fn() => true); + + expect($channel)->toBeIn($getCurrentChannels()); + + tenancy()->initialize(Tenant::create()); + $registerTestingBroadcaster(); + + expect($channel)->toBeIn($getCurrentChannels()); + + tenancy()->end(); + $registerTestingBroadcaster(); + + expect($channel)->toBeIn($getCurrentChannels()); +}); diff --git a/tests/Etc/TestingBroadcaster.php b/tests/Etc/TestingBroadcaster.php new file mode 100644 index 00000000..23efb74c --- /dev/null +++ b/tests/Etc/TestingBroadcaster.php @@ -0,0 +1,25 @@ +