diff options
author | Joas Schilling <coding@schilljs.com> | 2016-11-30 10:47:55 +0100 |
---|---|---|
committer | Joas Schilling <coding@schilljs.com> | 2016-11-30 10:47:55 +0100 |
commit | 56f45e49601be8ba9da159a468a06298383c20af (patch) | |
tree | 44f6e6873d4712d52c4261b251cea933a45c0ba4 /apps/dav/tests | |
parent | 4c0263b78ab7cac9e7e2af48f4a4053c1a02ed25 (diff) | |
download | nextcloud-server-56f45e49601be8ba9da159a468a06298383c20af.tar.gz nextcloud-server-56f45e49601be8ba9da159a468a06298383c20af.zip |
Add tests for the filters
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'apps/dav/tests')
3 files changed, 278 insertions, 0 deletions
diff --git a/apps/dav/tests/unit/CalDAV/Activity/Filter/CalendarTest.php b/apps/dav/tests/unit/CalDAV/Activity/Filter/CalendarTest.php new file mode 100644 index 00000000000..895a404acf5 --- /dev/null +++ b/apps/dav/tests/unit/CalDAV/Activity/Filter/CalendarTest.php @@ -0,0 +1,84 @@ +<?php +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @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\DAV\Tests\unit\CalDAV\Activity\Filter; + +use OCA\DAV\CalDAV\Activity\Filter\Calendar; +use OCP\Activity\IFilter; +use OCP\IL10N; +use OCP\IURLGenerator; +use Test\TestCase; + +class CalendarTest extends TestCase { + + /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */ + protected $url; + + /** @var IFilter|\PHPUnit_Framework_MockObject_MockObject */ + protected $filter; + + protected function setUp() { + parent::setUp(); + $this->url = $this->createMock(IURLGenerator::class); + $l = $this->createMock(IL10N::class); + $l->expects($this->any()) + ->method('t') + ->willReturnCallback(function($string, $args) { + return vsprintf($string, $args); + }); + + $this->filter = new Calendar( + $l, $this->url + ); + } + + public function testGetIcon() { + $this->url->expects($this->once()) + ->method('imagePath') + ->with('core', 'places/calendar-dark.svg') + ->willReturn('path-to-icon'); + + $this->url->expects($this->once()) + ->method('getAbsoluteURL') + ->with('path-to-icon') + ->willReturn('absolute-path-to-icon'); + + $this->assertEquals('absolute-path-to-icon', $this->filter->getIcon()); + } + + public function dataFilterTypes() { + return [ + [[], []], + [['calendar', 'calendar_event'], ['calendar', 'calendar_event']], + [['calendar', 'calendar_event', 'calendar_todo'], ['calendar', 'calendar_event']], + [['calendar', 'calendar_event', 'files'], ['calendar', 'calendar_event']], + ]; + } + + /** + * @dataProvider dataFilterTypes + * @param string[] $types + * @param string[] $expected + */ + public function testFilterTypes($types, $expected) { + $this->assertEquals($expected, $this->filter->filterTypes($types)); + } +} diff --git a/apps/dav/tests/unit/CalDAV/Activity/Filter/TodoTest.php b/apps/dav/tests/unit/CalDAV/Activity/Filter/TodoTest.php new file mode 100644 index 00000000000..54a5a6f5f9d --- /dev/null +++ b/apps/dav/tests/unit/CalDAV/Activity/Filter/TodoTest.php @@ -0,0 +1,84 @@ +<?php +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @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\DAV\Tests\unit\CalDAV\Activity\Filter; + +use OCA\DAV\CalDAV\Activity\Filter\Todo; +use OCP\Activity\IFilter; +use OCP\IL10N; +use OCP\IURLGenerator; +use Test\TestCase; + +class TodoTest extends TestCase { + + /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */ + protected $url; + + /** @var IFilter|\PHPUnit_Framework_MockObject_MockObject */ + protected $filter; + + protected function setUp() { + parent::setUp(); + $this->url = $this->createMock(IURLGenerator::class); + $l = $this->createMock(IL10N::class); + $l->expects($this->any()) + ->method('t') + ->willReturnCallback(function($string, $args) { + return vsprintf($string, $args); + }); + + $this->filter = new Todo( + $l, $this->url + ); + } + + public function testGetIcon() { + $this->url->expects($this->once()) + ->method('imagePath') + ->with('core', 'actions/checkmark.svg') + ->willReturn('path-to-icon'); + + $this->url->expects($this->once()) + ->method('getAbsoluteURL') + ->with('path-to-icon') + ->willReturn('absolute-path-to-icon'); + + $this->assertEquals('absolute-path-to-icon', $this->filter->getIcon()); + } + + public function dataFilterTypes() { + return [ + [[], []], + [['calendar_todo'], ['calendar_todo']], + [['calendar', 'calendar_event', 'calendar_todo'], ['calendar_todo']], + [['calendar', 'calendar_todo', 'files'], ['calendar_todo']], + ]; + } + + /** + * @dataProvider dataFilterTypes + * @param string[] $types + * @param string[] $expected + */ + public function testFilterTypes($types, $expected) { + $this->assertEquals($expected, $this->filter->filterTypes($types)); + } +} diff --git a/apps/dav/tests/unit/CalDAV/Activity/GenericFilterTest.php b/apps/dav/tests/unit/CalDAV/Activity/GenericFilterTest.php new file mode 100644 index 00000000000..b7297b6eba9 --- /dev/null +++ b/apps/dav/tests/unit/CalDAV/Activity/GenericFilterTest.php @@ -0,0 +1,110 @@ +<?php +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @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\DAV\Tests\unit\CalDAV\Activity; + +use OCA\DAV\CalDAV\Activity\Filter\Calendar; +use OCA\DAV\CalDAV\Activity\Filter\Todo; +use OCP\Activity\IFilter; +use Test\TestCase; + +class GenericFilterTest extends TestCase { + + public function dataFilters() { + return [ + [Calendar::class], + [Todo::class], + ]; + } + + /** + * @dataProvider dataFilters + * @param string $filterClass + */ + public function testImplementsInterface($filterClass) { + $filter = \OC::$server->query($filterClass); + $this->assertInstanceOf(IFilter::class, $filter); + } + + /** + * @dataProvider dataFilters + * @param string $filterClass + */ + public function testGetIdentifier($filterClass) { + /** @var IFilter $filter */ + $filter = \OC::$server->query($filterClass); + $this->assertInternalType('string', $filter->getIdentifier()); + } + + /** + * @dataProvider dataFilters + * @param string $filterClass + */ + public function testGetName($filterClass) { + /** @var IFilter $filter */ + $filter = \OC::$server->query($filterClass); + $this->assertInternalType('string', $filter->getName()); + } + + /** + * @dataProvider dataFilters + * @param string $filterClass + */ + public function testGetPriority($filterClass) { + /** @var IFilter $filter */ + $filter = \OC::$server->query($filterClass); + $priority = $filter->getPriority(); + $this->assertInternalType('int', $filter->getPriority()); + $this->assertGreaterThanOrEqual(0, $priority); + $this->assertLessThanOrEqual(100, $priority); + } + + /** + * @dataProvider dataFilters + * @param string $filterClass + */ + public function testGetIcon($filterClass) { + /** @var IFilter $filter */ + $filter = \OC::$server->query($filterClass); + $this->assertInternalType('string', $filter->getIcon()); + $this->assertStringStartsWith('http', $filter->getIcon()); + } + + /** + * @dataProvider dataFilters + * @param string $filterClass + */ + public function testFilterTypes($filterClass) { + /** @var IFilter $filter */ + $filter = \OC::$server->query($filterClass); + $this->assertInternalType('array', $filter->filterTypes([])); + } + + /** + * @dataProvider dataFilters + * @param string $filterClass + */ + public function testAllowedApps($filterClass) { + /** @var IFilter $filter */ + $filter = \OC::$server->query($filterClass); + $this->assertInternalType('array', $filter->allowedApps()); + } +} |