diff options
author | Joas Schilling <coding@schilljs.com> | 2017-03-26 21:15:25 +0200 |
---|---|---|
committer | Joas Schilling <coding@schilljs.com> | 2017-03-26 21:15:25 +0200 |
commit | e0b040d6235e7f8f8e5869e56a9bda1bf346cafd (patch) | |
tree | 91bc197d3e598c49838635f2a6983e4aea9ab78f /tests/lib | |
parent | 7cc5130e8262b8e42df0c2a017cddcca2b6d8c85 (diff) | |
download | nextcloud-server-e0b040d6235e7f8f8e5869e56a9bda1bf346cafd.tar.gz nextcloud-server-e0b040d6235e7f8f8e5869e56a9bda1bf346cafd.zip |
Allow multiple navigation links from info.xml
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'tests/lib')
-rw-r--r-- | tests/lib/NavigationManagerTest.php | 110 |
1 files changed, 73 insertions, 37 deletions
diff --git a/tests/lib/NavigationManagerTest.php b/tests/lib/NavigationManagerTest.php index 64fec802eca..0871a9a0910 100644 --- a/tests/lib/NavigationManagerTest.php +++ b/tests/lib/NavigationManagerTest.php @@ -14,7 +14,7 @@ namespace Test; use OC\App\AppManager; use OC\NavigationManager; -use OCP\App\IAppManager; +use OCP\IConfig; use OCP\IGroupManager; use OCP\IL10N; use OCP\IURLGenerator; @@ -23,13 +23,41 @@ use OCP\IUserSession; use OCP\L10N\IFactory; class NavigationManagerTest extends TestCase { + /** @var AppManager|\PHPUnit_Framework_MockObject_MockObject */ + protected $appManager; + /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */ + protected $urlGenerator; + /** @var IFactory|\PHPUnit_Framework_MockObject_MockObject */ + protected $l10nFac; + /** @var IUserSession|\PHPUnit_Framework_MockObject_MockObject */ + protected $userSession; + /** @var IGroupManager|\PHPUnit_Framework_MockObject_MockObject */ + protected $groupManager; + /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ + protected $config; + /** @var \OC\NavigationManager */ protected $navigationManager; protected function setUp() { parent::setUp(); - $this->navigationManager = new NavigationManager(); + $this->appManager = $this->createMock(AppManager::class); + $this->urlGenerator = $this->createMock(IURLGenerator::class); + $this->l10nFac = $this->createMock(IFactory::class); + $this->userSession = $this->createMock(IUserSession::class); + $this->groupManager = $this->createMock(IGroupManager::class); + $this->config = $this->createMock(IConfig::class); + $this->navigationManager = new NavigationManager( + $this->appManager, + $this->urlGenerator, + $this->l10nFac, + $this->userSession, + $this->groupManager, + $this->config + ); + + $this->navigationManager->clear(false); } public function addArrayData() { @@ -41,6 +69,7 @@ class NavigationManagerTest extends TestCase { 'order' => 1, 'icon' => 'optional', 'href' => 'url', + 'type' => 'settings', ], [ 'id' => 'entry id', @@ -49,6 +78,7 @@ class NavigationManagerTest extends TestCase { 'icon' => 'optional', 'href' => 'url', 'active' => false, + 'type' => 'settings', ], ], [ @@ -67,6 +97,7 @@ class NavigationManagerTest extends TestCase { 'icon' => '', 'href' => 'url', 'active' => false, + 'type' => 'link', ], ], ]; @@ -79,15 +110,15 @@ class NavigationManagerTest extends TestCase { * @param array $expectedEntry */ public function testAddArray(array $entry, array $expectedEntry) { - $this->assertEmpty($this->navigationManager->getAll(), 'Expected no navigation entry exists'); + $this->assertEmpty($this->navigationManager->getAll('all'), 'Expected no navigation entry exists'); $this->navigationManager->add($entry); - $navigationEntries = $this->navigationManager->getAll(); - $this->assertEquals(1, sizeof($navigationEntries), 'Expected that 1 navigation entry exists'); + $navigationEntries = $this->navigationManager->getAll('all'); + $this->assertCount(1, $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()'); + $this->navigationManager->clear(false); + $this->assertEmpty($this->navigationManager->getAll('all'), 'Expected no navigation entry exists after clear()'); } /** @@ -109,18 +140,18 @@ class NavigationManagerTest extends TestCase { $this->assertEquals(0, $testAddClosureNumberOfCalls, 'Expected that the closure is not called by add()'); - $navigationEntries = $this->navigationManager->getAll(); + $navigationEntries = $this->navigationManager->getAll('all'); $this->assertEquals(1, $testAddClosureNumberOfCalls, 'Expected that the closure is called by getAll()'); - $this->assertEquals(1, sizeof($navigationEntries), 'Expected that 1 navigation entry exists'); + $this->assertCount(1, $navigationEntries, 'Expected that 1 navigation entry exists'); $this->assertEquals($expectedEntry, $navigationEntries[0]); - $navigationEntries = $this->navigationManager->getAll(); + $navigationEntries = $this->navigationManager->getAll('all'); $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->assertCount(1, $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()'); + $this->navigationManager->clear(false); + $this->assertEmpty($this->navigationManager->getAll('all'), 'Expected no navigation entry exists after clear()'); } public function testAddArrayClearGetAll() { @@ -134,7 +165,7 @@ class NavigationManagerTest extends TestCase { $this->assertEmpty($this->navigationManager->getAll(), 'Expected no navigation entry exists'); $this->navigationManager->add($entry); - $this->navigationManager->clear(); + $this->navigationManager->clear(false); $this->assertEmpty($this->navigationManager->getAll(), 'Expected no navigation entry exists after clear()'); } @@ -160,7 +191,7 @@ class NavigationManagerTest extends TestCase { }); $this->assertEquals(0, $testAddClosureNumberOfCalls, 'Expected that the closure is not called by add()'); - $this->navigationManager->clear(); + $this->navigationManager->clear(false); $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()'); @@ -169,35 +200,29 @@ class NavigationManagerTest extends TestCase { /** * @dataProvider providesNavigationConfig */ - public function testWithAppManager($expected, $config, $isAdmin = false) { + public function testWithAppManager($expected, $navigation, $isAdmin = false) { - $appManager = $this->createMock(AppManager::class); - $urlGenerator = $this->createMock(IURLGenerator::class); - $l10nFac = $this->createMock(IFactory::class); - $userSession = $this->createMock(IUserSession::class); - $groupManager = $this->createMock(IGroupManager::class); $l = $this->createMock(IL10N::class); $l->expects($this->any())->method('t')->willReturnCallback(function($text, $parameters = []) { return vsprintf($text, $parameters); }); - $appManager->expects($this->once())->method('getInstalledApps')->willReturn(['test']); - $appManager->expects($this->once())->method('getAppInfo')->with('test')->willReturn($config); - $l10nFac->expects($this->exactly(count($expected)))->method('get')->with('test')->willReturn($l); - $urlGenerator->expects($this->any())->method('imagePath')->willReturnCallback(function($appName, $file) { + $this->appManager->expects($this->once())->method('getInstalledApps')->willReturn(['test']); + $this->appManager->expects($this->once())->method('getAppInfo')->with('test')->willReturn($navigation); + $this->l10nFac->expects($this->exactly(count($expected) + 1))->method('get')->willReturn($l); + $this->urlGenerator->expects($this->any())->method('imagePath')->willReturnCallback(function($appName, $file) { return "/apps/$appName/img/$file"; }); - $urlGenerator->expects($this->exactly(count($expected)))->method('linkToRoute')->willReturnCallback(function($route) { + $this->urlGenerator->expects($this->exactly(count($expected)))->method('linkToRoute')->willReturnCallback(function() { return "/apps/test/"; }); $user = $this->createMock(IUser::class); $user->expects($this->any())->method('getUID')->willReturn('user001'); - $userSession->expects($this->any())->method('getUser')->willReturn($user); - $groupManager->expects($this->any())->method('isAdmin')->willReturn($isAdmin); - - $navigationManager = new NavigationManager($appManager, $urlGenerator, $l10nFac, $userSession, $groupManager); + $this->userSession->expects($this->any())->method('getUser')->willReturn($user); + $this->groupManager->expects($this->any())->method('isAdmin')->willReturn($isAdmin); - $entries = $navigationManager->getAll(); + $this->navigationManager->clear(); + $entries = $this->navigationManager->getAll('all'); $this->assertEquals($expected, $entries); } @@ -209,18 +234,29 @@ class NavigationManagerTest extends TestCase { 'href' => '/apps/test/', 'icon' => '/apps/test/img/app.svg', 'name' => 'Test', - 'active' => false - ]], ['navigation' => ['route' => 'test.page.index', 'name' => 'Test']]], + 'active' => false, + 'type' => 'link', + ]], ['navigations' => [['route' => 'test.page.index', 'name' => 'Test']]]], + 'minimalistic-settings' => [[[ + 'id' => 'test', + 'order' => 100, + 'href' => '/apps/test/', + 'icon' => '/apps/test/img/app.svg', + 'name' => 'Test', + 'active' => false, + 'type' => 'settings', + ]], ['navigations' => [['route' => 'test.page.index', 'name' => 'Test', 'type' => 'settings']]]], 'no admin' => [[[ 'id' => 'test', 'order' => 100, 'href' => '/apps/test/', 'icon' => '/apps/test/img/app.svg', 'name' => 'Test', - 'active' => false - ]], ['navigation' => ['@attributes' => ['role' => 'admin'], 'route' => 'test.page.index', 'name' => 'Test']], true], - 'no name' => [[], ['navigation' => ['@attributes' => ['role' => 'admin'], 'route' => 'test.page.index']], true], - 'admin' => [[], ['navigation' => ['@attributes' => ['role' => 'admin'], 'route' => 'test.page.index', 'name' => 'Test']]] + 'active' => false, + 'type' => 'link', + ]], ['navigations' => [['@attributes' => ['role' => 'admin'], 'route' => 'test.page.index', 'name' => 'Test']]], true], + 'no name' => [[], ['navigations' => [['@attributes' => ['role' => 'admin'], 'route' => 'test.page.index']]], true], + 'admin' => [[], ['navigations' => [['@attributes' => ['role' => 'admin'], 'route' => 'test.page.index', 'name' => 'Test']]]] ]; } } |