diff options
author | Lukas Reschke <lukas@owncloud.com> | 2015-03-17 11:28:27 +0100 |
---|---|---|
committer | Lukas Reschke <lukas@owncloud.com> | 2015-03-17 11:28:27 +0100 |
commit | e4c6b0abf5d725d5094b902f350cad822658e7cb (patch) | |
tree | 1007fd7664fdaba69e6733f047bcb8c71d7c5b49 /tests/lib | |
parent | b1c19f74a1d245bd8a4a807e73bbe58860d55314 (diff) | |
parent | ec1d5011b6056f7281c09f3d3eac19a01e5fe928 (diff) | |
download | nextcloud-server-e4c6b0abf5d725d5094b902f350cad822658e7cb.tar.gz nextcloud-server-e4c6b0abf5d725d5094b902f350cad822658e7cb.zip |
Merge pull request #14931 from owncloud/issue/14881-closures-for-navigation-entries
Issue/14881 closures for navigation entries
Diffstat (limited to 'tests/lib')
-rw-r--r-- | tests/lib/navigationmanagertest.php | 160 |
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()'); + } +} |