From 29ba72fe53b458a8c26293dee8c15bcb9a10d402 Mon Sep 17 00:00:00 2001 From: lukinovec Date: Mon, 12 Sep 2022 08:58:27 +0200 Subject: [PATCH] Add DeleteTenantStorage listener --- assets/TenancyServiceProvider.stub.php | 1 + src/Events/DeletingTenantStorage.php | 9 +++++++++ src/Events/TenantStorageDeleted.php | 9 +++++++++ src/Listeners/DeleteTenantStorage.php | 22 ++++++++++++++++++++++ tests/BootstrapperTest.php | 10 +++------- 5 files changed, 44 insertions(+), 7 deletions(-) create mode 100644 src/Events/DeletingTenantStorage.php create mode 100644 src/Events/TenantStorageDeleted.php create mode 100644 src/Listeners/DeleteTenantStorage.php diff --git a/assets/TenancyServiceProvider.stub.php b/assets/TenancyServiceProvider.stub.php index 865bb93d..e45bf9aa 100644 --- a/assets/TenancyServiceProvider.stub.php +++ b/assets/TenancyServiceProvider.stub.php @@ -53,6 +53,7 @@ class TenancyServiceProvider extends ServiceProvider ])->send(function (Events\TenantDeleted $event) { return $event->tenant; })->shouldBeQueued(false), // `false` by default, but you probably want to make this `true` for production. + // Listeners\DeleteTenantStorage::class, ], // Domain events diff --git a/src/Events/DeletingTenantStorage.php b/src/Events/DeletingTenantStorage.php new file mode 100644 index 00000000..62b53dfe --- /dev/null +++ b/src/Events/DeletingTenantStorage.php @@ -0,0 +1,9 @@ +tenant)); + + File::deleteDirectory($event->tenant->run(fn () => storage_path())); + + event(new TenantStorageDeleted($event->tenant)); + } +} diff --git a/tests/BootstrapperTest.php b/tests/BootstrapperTest.php index 921a9b99..e89e2be0 100644 --- a/tests/BootstrapperTest.php +++ b/tests/BootstrapperTest.php @@ -23,6 +23,7 @@ use Stancl\Tenancy\Bootstrappers\RedisTenancyBootstrapper; use Stancl\Tenancy\Bootstrappers\DatabaseTenancyBootstrapper; use Stancl\Tenancy\Bootstrappers\FilesystemTenancyBootstrapper; use Stancl\Tenancy\Events\TenantDeleted; +use Stancl\Tenancy\Listeners\DeleteTenantStorage; beforeEach(function () { $this->mockConsoleOutput = false; @@ -186,19 +187,14 @@ test('filesystem data is separated', function () { expect($new_storage_path)->toEqual($expected_storage_path); }); -test('tenant storage gets deleted after the tenant if filesystem.delete_storage_after_tenant_deletion is true', function () { +test('tenant storage gets deleted after the tenant', function () { config([ 'tenancy.bootstrappers' => [ FilesystemTenancyBootstrapper::class, ], - 'tenancy.filesystem.delete_storage_after_tenant_deletion' => true ]); - Event::listen(TenantDeleted::class, function(TenantDeleted $event) { - if (config('tenancy.filesystem.delete_storage_after_tenant_deletion')) { - File::deleteDirectory($event->tenant->run(fn () => storage_path())); - } - }); + Event::listen(TenantDeleted::class, DeleteTenantStorage::class); tenancy()->initialize(Tenant::create()); $tenantStoragePath = storage_path();