From 3f60c4a652b20ca8c988c2821374af1d38df6508 Mon Sep 17 00:00:00 2001 From: Jori Stein <44996807+stein-j@users.noreply.github.com> Date: Mon, 17 Oct 2022 13:48:24 -0400 Subject: [PATCH] Add maintenance mode events (#979) --- assets/TenancyServiceProvider.stub.php | 2 ++ src/Database/Concerns/MaintenanceMode.php | 6 ++++++ src/Events/TenantMaintenanceModeDisabled.php | 10 ++++++++++ src/Events/TenantMaintenanceModeEnabled.php | 10 ++++++++++ tests/MaintenanceModeTest.php | 15 +++++++++++++++ 5 files changed, 43 insertions(+) create mode 100644 src/Events/TenantMaintenanceModeDisabled.php create mode 100644 src/Events/TenantMaintenanceModeEnabled.php diff --git a/assets/TenancyServiceProvider.stub.php b/assets/TenancyServiceProvider.stub.php index 75784361..7c52e295 100644 --- a/assets/TenancyServiceProvider.stub.php +++ b/assets/TenancyServiceProvider.stub.php @@ -58,6 +58,8 @@ class TenancyServiceProvider extends ServiceProvider return $event->tenant; })->shouldBeQueued(false), // `false` by default, but you probably want to make this `true` for production. ], + Events\TenantMaintenanceModeEnabled::class => [], + Events\TenantMaintenanceModeDisabled::class => [], // Domain events Events\CreatingDomain::class => [], diff --git a/src/Database/Concerns/MaintenanceMode.php b/src/Database/Concerns/MaintenanceMode.php index cc4490f6..c147f748 100644 --- a/src/Database/Concerns/MaintenanceMode.php +++ b/src/Database/Concerns/MaintenanceMode.php @@ -3,6 +3,8 @@ declare(strict_types=1); namespace Stancl\Tenancy\Database\Concerns; +use Stancl\Tenancy\Events\TenantMaintenanceModeDisabled; +use Stancl\Tenancy\Events\TenantMaintenanceModeEnabled; /** * @mixin \Illuminate\Database\Eloquent\Model @@ -21,10 +23,14 @@ trait MaintenanceMode 'status' => $data['status'] ?? 503, ], ]); + + event(new TenantMaintenanceModeEnabled($this)); } public function bringUpFromMaintenance(): void { $this->update(['maintenance_mode' => null]); + + event(new TenantMaintenanceModeDisabled($this)); } } diff --git a/src/Events/TenantMaintenanceModeDisabled.php b/src/Events/TenantMaintenanceModeDisabled.php new file mode 100644 index 00000000..5b42cff6 --- /dev/null +++ b/src/Events/TenantMaintenanceModeDisabled.php @@ -0,0 +1,10 @@ +get('http://acme.localhost/foo')->assertStatus(200); }); +test('maintenance mode events are fired', function () { + $tenant = MaintenanceTenant::create(); + + Event::fake(); + + $tenant->putDownForMaintenance(); + + Event::assertDispatched(\Stancl\Tenancy\Events\TenantMaintenanceModeEnabled::class); + + $tenant->bringUpFromMaintenance(); + + Event::assertDispatched(\Stancl\Tenancy\Events\TenantMaintenanceModeDisabled::class); +}); + test('tenants can be put into maintenance mode using artisan commands', function() { Route::get('/foo', function () { return 'bar';