]> source.dussan.org Git - nextcloud-server.git/commitdiff
Add tests for the navigation manager (closure) behaviour
authorJoas Schilling <nickvergessen@owncloud.com>
Mon, 16 Mar 2015 15:46:17 +0000 (16:46 +0100)
committerJoas Schilling <nickvergessen@owncloud.com>
Mon, 16 Mar 2015 15:46:17 +0000 (16:46 +0100)
tests/lib/navigationmanagertest.php [new file with mode: 0644]

diff --git a/tests/lib/navigationmanagertest.php b/tests/lib/navigationmanagertest.php
new file mode 100644 (file)
index 0000000..9670878
--- /dev/null
@@ -0,0 +1,160 @@
+<?php
+/**
+ * ownCloud
+ *
+ * @author Joas Schilling
+ * @copyright 2015 Joas Schilling nickvergessen@owncloud.com
+ *
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace Test;
+
+use OC\NavigationManager;
+
+class NavigationManagerTest extends TestCase {
+       /** @var \OC\NavigationManager */
+       protected $navigationManager;
+
+       protected function setUp() {
+               parent::setUp();
+
+               $this->navigationManager = new NavigationManager();
+       }
+
+       public function addArrayData() {
+               return [
+                       [
+                               [
+                                       'id'    => 'entry id',
+                                       'name'  => 'link text',
+                                       'order' => 1,
+                                       'icon'  => 'optional',
+                                       'href'  => 'url',
+                               ],
+                               [
+                                       'id'            => 'entry id',
+                                       'name'          => 'link text',
+                                       'order'         => 1,
+                                       'icon'          => 'optional',
+                                       'href'          => 'url',
+                                       'active'        => false,
+                               ],
+                       ],
+                       [
+                               [
+                                       'id'    => 'entry id',
+                                       'name'  => 'link text',
+                                       'order' => 1,
+                                       //'icon'        => 'optional',
+                                       'href'  => 'url',
+                                       'active'        => true,
+                               ],
+                               [
+                                       'id'            => 'entry id',
+                                       'name'          => 'link text',
+                                       'order'         => 1,
+                                       'icon'          => '',
+                                       'href'          => 'url',
+                                       'active'        => false,
+                               ],
+                       ],
+               ];
+       }
+
+       /**
+        * @dataProvider addArrayData
+        *
+        * @param array $entry
+        * @param array $expectedEntry
+        */
+       public function testAddArray(array $entry, array $expectedEntry) {
+               $this->assertEmpty($this->navigationManager->getAll(), 'Expected no navigation entry exists');
+               $this->navigationManager->add($entry);
+
+               $navigationEntries = $this->navigationManager->getAll();
+               $this->assertEquals(1, sizeof($navigationEntries), 'Expected that 1 navigation entry exists');
+               $this->assertEquals($expectedEntry, $navigationEntries[0]);
+
+               $this->navigationManager->clear();
+               $this->assertEmpty($this->navigationManager->getAll(), 'Expected no navigation entry exists after clear()');
+       }
+
+       /**
+        * @dataProvider addArrayData
+        *
+        * @param array $entry
+        * @param array $expectedEntry
+        */
+       public function testAddClosure(array $entry, array $expectedEntry) {
+               global $testAddClosureNumberOfCalls;
+               $testAddClosureNumberOfCalls = 0;
+
+               $this->navigationManager->add(function () use ($entry) {
+                       global $testAddClosureNumberOfCalls;
+                       $testAddClosureNumberOfCalls++;
+
+                       return $entry;
+               });
+
+               $this->assertEquals(0, $testAddClosureNumberOfCalls, 'Expected that the closure is not called by add()');
+
+               $navigationEntries = $this->navigationManager->getAll();
+               $this->assertEquals(1, $testAddClosureNumberOfCalls, 'Expected that the closure is called by getAll()');
+               $this->assertEquals(1, sizeof($navigationEntries), 'Expected that 1 navigation entry exists');
+               $this->assertEquals($expectedEntry, $navigationEntries[0]);
+
+               $navigationEntries = $this->navigationManager->getAll();
+               $this->assertEquals(1, $testAddClosureNumberOfCalls, 'Expected that the closure is only called once for getAll()');
+               $this->assertEquals(1, sizeof($navigationEntries), 'Expected that 1 navigation entry exists');
+               $this->assertEquals($expectedEntry, $navigationEntries[0]);
+
+               $this->navigationManager->clear();
+               $this->assertEmpty($this->navigationManager->getAll(), 'Expected no navigation entry exists after clear()');
+       }
+
+       public function testAddArrayClearGetAll() {
+               $entry = [
+                       'id'    => 'entry id',
+                       'name'  => 'link text',
+                       'order' => 1,
+                       'icon'  => 'optional',
+                       'href'  => 'url',
+               ];
+
+               $this->assertEmpty($this->navigationManager->getAll(), 'Expected no navigation entry exists');
+               $this->navigationManager->add($entry);
+               $this->navigationManager->clear();
+               $this->assertEmpty($this->navigationManager->getAll(), 'Expected no navigation entry exists after clear()');
+       }
+
+       public function testAddClosureClearGetAll() {
+               $this->assertEmpty($this->navigationManager->getAll(), 'Expected no navigation entry exists');
+
+               $entry = [
+                       'id'    => 'entry id',
+                       'name'  => 'link text',
+                       'order' => 1,
+                       'icon'  => 'optional',
+                       'href'  => 'url',
+               ];
+
+               global $testAddClosureNumberOfCalls;
+               $testAddClosureNumberOfCalls = 0;
+
+               $this->navigationManager->add(function () use ($entry) {
+                       global $testAddClosureNumberOfCalls;
+                       $testAddClosureNumberOfCalls++;
+
+                       return $entry;
+               });
+
+               $this->assertEquals(0, $testAddClosureNumberOfCalls, 'Expected that the closure is not called by add()');
+               $this->navigationManager->clear();
+               $this->assertEquals(0, $testAddClosureNumberOfCalls, 'Expected that the closure is not called by clear()');
+               $this->assertEmpty($this->navigationManager->getAll(), 'Expected no navigation entry exists after clear()');
+               $this->assertEquals(0, $testAddClosureNumberOfCalls, 'Expected that the closure is not called by getAll()');
+       }
+}