From ceb119b2261664eec5056d52ce7b90e371cca205 Mon Sep 17 00:00:00 2001 From: James Brooks Date: Fri, 6 May 2016 13:54:00 +0100 Subject: [PATCH] When removing a component, clean up the subscriptions. Closes #1739 --- .../CleanupComponentSubscriptionsHandler.php | 40 +++++++++++++++++++ .../Providers/EventServiceProvider.php | 2 +- .../ComponentWasRemovedEventTest.php | 2 +- 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 app/Bus/Handlers/Events/Component/CleanupComponentSubscriptionsHandler.php diff --git a/app/Bus/Handlers/Events/Component/CleanupComponentSubscriptionsHandler.php b/app/Bus/Handlers/Events/Component/CleanupComponentSubscriptionsHandler.php new file mode 100644 index 00000000..5c64caf7 --- /dev/null +++ b/app/Bus/Handlers/Events/Component/CleanupComponentSubscriptionsHandler.php @@ -0,0 +1,40 @@ + + */ +class CleanupComponentSubscriptionsHandler +{ + /** + * Handle the event. + * + * @param \CachetHQ\Cachet\Bus\Events\Component\ComponentWasRemovedEvent $event + * + * @return void + */ + public function handle(ComponentWasRemovedEvent $event) + { + $component = $event->component; + $subscription = Subscription::forComponent($component->id); + + // Cleanup the subscriptions. + $subscription->delete(); + } +} diff --git a/app/Foundation/Providers/EventServiceProvider.php b/app/Foundation/Providers/EventServiceProvider.php index f9f02494..7888cc54 100644 --- a/app/Foundation/Providers/EventServiceProvider.php +++ b/app/Foundation/Providers/EventServiceProvider.php @@ -34,7 +34,7 @@ class EventServiceProvider extends ServiceProvider // ], 'CachetHQ\Cachet\Bus\Events\Component\ComponentWasRemovedEvent' => [ - // + 'CachetHQ\Cachet\Bus\Handlers\Events\Component\CleanupComponentSubscriptionsHandler', ], 'CachetHQ\Cachet\Bus\Events\Component\ComponentWasUpdatedEvent' => [ 'CachetHQ\Cachet\Bus\Handlers\Events\Component\SendComponentUpdateEmailNotificationHandler', diff --git a/tests/Bus/Events/Component/ComponentWasRemovedEventTest.php b/tests/Bus/Events/Component/ComponentWasRemovedEventTest.php index b782fd05..642a98b1 100644 --- a/tests/Bus/Events/Component/ComponentWasRemovedEventTest.php +++ b/tests/Bus/Events/Component/ComponentWasRemovedEventTest.php @@ -18,7 +18,7 @@ class ComponentWasRemovedEventTest extends AbstractComponentEventTestCase { protected function objectHasHandlers() { - return false; + return true; } protected function getObjectAndParams()