diff options
author | Arthur Schiwon <blizzz@owncloud.com> | 2016-05-09 10:02:07 +0200 |
---|---|---|
committer | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2016-10-07 17:11:19 +0200 |
commit | e1073cf442613ac92878c8ded30a33db35b30e14 (patch) | |
tree | 43bf514650829b6a4684cb564c62b3785f60b188 /apps/comments/tests/Unit/EventHandlerTest.php | |
parent | 9e7824f3edcb498447915a396e93678ddb6f5768 (diff) | |
download | nextcloud-server-e1073cf442613ac92878c8ded30a33db35b30e14.tar.gz nextcloud-server-e1073cf442613ac92878c8ded30a33db35b30e14.zip |
Notificacations for simple @-mentioning in comments
(WIP) notify user when mentioned in comments
Fix doc, and create absolute URL for as notification link.
PSR-4 compatibility changes
also move notification creation to comments app
Do not notify yourself
unit test for controller and application
smaller fixes
- translatable app name
- remove doubles in mention array
- micro perf optimization
- display name: special label for deleted users, keep user id for users that could not be fetched from userManager
Comment Notification-Listener Unit Test
fix email adresses
remove notification when triggering comment was deleted
add and adjust tests
add missing @license tags
simplify NotificationsController registration
appinfo simplification, php docs
make string easier to translate
adjust test
replace dispatcher-based listeners with a registration method and interface
safer to not pass optional data parameter to setSubject for marking as processed. ID and mention suffices
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
update comment
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Diffstat (limited to 'apps/comments/tests/Unit/EventHandlerTest.php')
-rw-r--r-- | apps/comments/tests/Unit/EventHandlerTest.php | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/apps/comments/tests/Unit/EventHandlerTest.php b/apps/comments/tests/Unit/EventHandlerTest.php new file mode 100644 index 00000000000..7a630329974 --- /dev/null +++ b/apps/comments/tests/Unit/EventHandlerTest.php @@ -0,0 +1,152 @@ +<?php +/** + * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Comments\Tests\Unit\Notification; + +use OCA\Comments\AppInfo\Application; +use OCA\Comments\EventHandler; +use OCP\Comments\CommentsEvent; +use OCP\Comments\IComment; +use OCA\Comments\Activity\Listener as ActivityListener; +use OCA\Comments\Notification\Listener as NotificationListener; +use OCP\IContainer; +use Test\TestCase; + +class EventHandlerTest extends TestCase { + /** @var EventHandler */ + protected $eventHandler; + + /** @var Application|\PHPUnit_Framework_MockObject_MockObject */ + protected $app; + + protected function setUp() { + parent::setUp(); + + $this->app = $this->getMockBuilder(Application::class) + ->disableOriginalConstructor() + ->getMock(); + + $this->eventHandler = new EventHandler($this->app); + } + + public function testNotFiles() { + /** @var IComment|\PHPUnit_Framework_MockObject_MockObject $comment */ + $comment = $this->getMockBuilder(IComment::class)->getMock(); + $comment->expects($this->once()) + ->method('getObjectType') + ->willReturn('smiles'); + + /** @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->never()) + ->method('getEvent'); + + $this->eventHandler->handle($event); + } + + public function notHandledProvider() { + return [ + [CommentsEvent::EVENT_DELETE], + [CommentsEvent::EVENT_UPDATE] + ]; + } + + /** + * @dataProvider notHandledProvider + * @param $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 testHandled() { + /** @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->atLeastOnce()) + ->method('getComment') + ->willReturn($comment); + $event->expects($this->atLeastOnce()) + ->method('getEvent') + ->willReturn(CommentsEvent::EVENT_ADD); + + $notificationListener = $this->getMockBuilder(NotificationListener::class) + ->disableOriginalConstructor() + ->getMock(); + $notificationListener->expects($this->once()) + ->method('evaluate') + ->with($event); + + $activityListener = $this->getMockBuilder(ActivityListener::class) + ->disableOriginalConstructor() + ->getMock(); + $activityListener->expects($this->once()) + ->method('commentEvent') + ->with($event); + + /** @var IContainer|\PHPUnit_Framework_MockObject_MockObject $c */ + $c = $this->getMockBuilder(IContainer::class)->getMock(); + $c->expects($this->exactly(2)) + ->method('query') + ->withConsecutive([NotificationListener::class], [ActivityListener::class]) + ->willReturnOnConsecutiveCalls($notificationListener, $activityListener); + + $this->app->expects($this->once()) + ->method('getContainer') + ->willReturn($c); + + $this->eventHandler->handle($event); + } + +} |