summaryrefslogtreecommitdiffstats
path: root/apps/dav/tests
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2016-11-30 10:47:55 +0100
committerJoas Schilling <coding@schilljs.com>2016-11-30 10:47:55 +0100
commit56f45e49601be8ba9da159a468a06298383c20af (patch)
tree44f6e6873d4712d52c4261b251cea933a45c0ba4 /apps/dav/tests
parent4c0263b78ab7cac9e7e2af48f4a4053c1a02ed25 (diff)
downloadnextcloud-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')
-rw-r--r--apps/dav/tests/unit/CalDAV/Activity/Filter/CalendarTest.php84
-rw-r--r--apps/dav/tests/unit/CalDAV/Activity/Filter/TodoTest.php84
-rw-r--r--apps/dav/tests/unit/CalDAV/Activity/GenericFilterTest.php110
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());
+ }
+}