summaryrefslogtreecommitdiffstats
path: root/tests/lib/NavigationManagerTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lib/NavigationManagerTest.php')
-rw-r--r--tests/lib/NavigationManagerTest.php160
1 files changed, 160 insertions, 0 deletions
diff --git a/tests/lib/NavigationManagerTest.php b/tests/lib/NavigationManagerTest.php
new file mode 100644
index 00000000000..96708786e39
--- /dev/null
+++ b/tests/lib/NavigationManagerTest.php
@@ -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()');
+ }
+}