]> source.dussan.org Git - nextcloud-server.git/commitdiff
Add tests for the filters
authorJoas Schilling <coding@schilljs.com>
Wed, 30 Nov 2016 09:47:55 +0000 (10:47 +0100)
committerJoas Schilling <coding@schilljs.com>
Wed, 30 Nov 2016 09:47:55 +0000 (10:47 +0100)
Signed-off-by: Joas Schilling <coding@schilljs.com>
apps/dav/tests/unit/CalDAV/Activity/Filter/CalendarTest.php [new file with mode: 0644]
apps/dav/tests/unit/CalDAV/Activity/Filter/TodoTest.php [new file with mode: 0644]
apps/dav/tests/unit/CalDAV/Activity/GenericFilterTest.php [new file with mode: 0644]

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 (file)
index 0000000..895a404
--- /dev/null
@@ -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 (file)
index 0000000..54a5a6f
--- /dev/null
@@ -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 (file)
index 0000000..b7297b6
--- /dev/null
@@ -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());
+       }
+}