diff options
author | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2016-10-12 18:06:22 +0200 |
---|---|---|
committer | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2016-10-12 18:06:22 +0200 |
commit | 1bcd2ca8e35dca6e68e5f06506ade0a78a2beae8 (patch) | |
tree | e1af5850f05bfd165c3542f0b50a49fe623452c0 /apps/comments | |
parent | a9671a4dc2cc904ebb852c7804204ac9f245017e (diff) | |
download | nextcloud-server-1bcd2ca8e35dca6e68e5f06506ade0a78a2beae8.tar.gz nextcloud-server-1bcd2ca8e35dca6e68e5f06506ade0a78a2beae8.zip |
emit pre-update event for comments
* notifications can be cleaned up, no polluted DB
* updating comments will re-notify users or remove notifications, depending on the message
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Diffstat (limited to 'apps/comments')
-rw-r--r-- | apps/comments/lib/EventHandler.php | 27 | ||||
-rw-r--r-- | apps/comments/lib/Notification/Listener.php | 4 | ||||
-rw-r--r-- | apps/comments/tests/Unit/EventHandlerTest.php | 37 | ||||
-rw-r--r-- | apps/comments/tests/Unit/Notification/ListenerTest.php | 2 |
4 files changed, 27 insertions, 43 deletions
diff --git a/apps/comments/lib/EventHandler.php b/apps/comments/lib/EventHandler.php index 6692ccc520d..a5f312617e5 100644 --- a/apps/comments/lib/EventHandler.php +++ b/apps/comments/lib/EventHandler.php @@ -57,14 +57,29 @@ class EventHandler implements ICommentsEventHandler { if( $eventType === CommentsEvent::EVENT_ADD && $event instanceof CommentsEvent ) { - $this->onAdd($event); + $this->notificationHandler($event); + $this->activityHandler($event); + return; + } + + if( $eventType === CommentsEvent::EVENT_PRE_UPDATE + && $event instanceof CommentsEvent + ) { + $this->notificationHandler($event); + return; + } + + if( $eventType === CommentsEvent::EVENT_UPDATE + && $event instanceof CommentsEvent + ) { + $this->notificationHandler($event); return; } if( $eventType === CommentsEvent::EVENT_DELETE && $event instanceof CommentsEvent ) { - $this->onDelete($event); + $this->notificationHandler($event); return; } } @@ -72,13 +87,9 @@ class EventHandler implements ICommentsEventHandler { /** * @param CommentsEvent $event */ - private function onAdd(CommentsEvent $event) { + private function activityHandler(CommentsEvent $event) { $c = $this->app->getContainer(); - /** @var NotificationListener $notificationListener */ - $notificationListener = $c->query(NotificationListener::class); - $notificationListener->evaluate($event); - /** @var ActivityListener $listener */ $activityListener = $c->query(ActivityListener::class); $activityListener->commentEvent($event); @@ -87,7 +98,7 @@ class EventHandler implements ICommentsEventHandler { /** * @param CommentsEvent $event */ - private function onDelete(CommentsEvent $event) { + private function notificationHandler(CommentsEvent $event) { $c = $this->app->getContainer(); /** @var NotificationListener $notificationListener */ diff --git a/apps/comments/lib/Notification/Listener.php b/apps/comments/lib/Notification/Listener.php index 5e979fd9bf0..68705085023 100644 --- a/apps/comments/lib/Notification/Listener.php +++ b/apps/comments/lib/Notification/Listener.php @@ -85,7 +85,9 @@ class Listener { } $notification->setUser($user); - if($event->getEvent() === CommentsEvent::EVENT_DELETE) { + if( $event->getEvent() === CommentsEvent::EVENT_DELETE + || $event->getEvent() === CommentsEvent::EVENT_PRE_UPDATE) + { $this->notificationManager->markProcessed($notification); } else { $this->notificationManager->notify($notification); diff --git a/apps/comments/tests/Unit/EventHandlerTest.php b/apps/comments/tests/Unit/EventHandlerTest.php index 21b701ea8cc..f377c01b3c9 100644 --- a/apps/comments/tests/Unit/EventHandlerTest.php +++ b/apps/comments/tests/Unit/EventHandlerTest.php @@ -69,42 +69,11 @@ class EventHandlerTest extends TestCase { $this->eventHandler->handle($event); } - public function notHandledProvider() { - return [ - [CommentsEvent::EVENT_UPDATE] - ]; - } - - /** - * @dataProvider notHandledProvider - * @param string $eventType - */ - public function testNotHandled($eventType) { - /** @var IComment|\PHPUnit_Framework_MockObject_MockObject $comment */ - $comment = $this->getMockBuilder(IComment::class)->getMock(); - $comment->expects($this->once()) - ->method('getObjectType') - ->willReturn('files'); - - /** @var CommentsEvent|\PHPUnit_Framework_MockObject_MockObject $event */ - $event = $this->getMockBuilder(CommentsEvent::class) - ->disableOriginalConstructor() - ->getMock(); - $event->expects($this->once()) - ->method('getComment') - ->willReturn($comment); - $event->expects($this->once()) - ->method('getEvent') - ->willReturn($eventType); - - // further processing does not happen, because $event methods cannot be - // access more than once. - $this->eventHandler->handle($event); - } - public function handledProvider() { return [ [CommentsEvent::EVENT_DELETE], + [CommentsEvent::EVENT_UPDATE], + [CommentsEvent::EVENT_PRE_UPDATE], [CommentsEvent::EVENT_ADD] ]; } @@ -152,7 +121,7 @@ class EventHandlerTest extends TestCase { ->withConsecutive([NotificationListener::class], [ActivityListener::class]) ->willReturnOnConsecutiveCalls($notificationListener, $activityListener); - $this->app->expects($this->once()) + $this->app->expects($this->atLeastOnce()) ->method('getContainer') ->willReturn($c); diff --git a/apps/comments/tests/Unit/Notification/ListenerTest.php b/apps/comments/tests/Unit/Notification/ListenerTest.php index 98a0375e49a..5926264fa08 100644 --- a/apps/comments/tests/Unit/Notification/ListenerTest.php +++ b/apps/comments/tests/Unit/Notification/ListenerTest.php @@ -60,6 +60,8 @@ class ListenerTest extends TestCase { public function eventProvider() { return [ [CommentsEvent::EVENT_ADD, 'notify'], + [CommentsEvent::EVENT_UPDATE, 'notify'], + [CommentsEvent::EVENT_PRE_UPDATE, 'markProcessed'], [CommentsEvent::EVENT_DELETE, 'markProcessed'] ]; } |