|
|
|
@ -215,6 +215,10 @@ class NavigationManagerTest extends TestCase {
|
|
|
|
|
return vsprintf($text, $parameters);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
/* Return default value */
|
|
|
|
|
$this->config->method('getUserValue')
|
|
|
|
|
->willReturnArgument(3);
|
|
|
|
|
|
|
|
|
|
$this->appManager->expects($this->any())
|
|
|
|
|
->method('isEnabledForUser')
|
|
|
|
|
->with('theming')
|
|
|
|
@ -417,12 +421,82 @@ class NavigationManagerTest extends TestCase {
|
|
|
|
|
],
|
|
|
|
|
'no admin' => [
|
|
|
|
|
$defaults,
|
|
|
|
|
['navigations' => [[
|
|
|
|
|
'@attributes' => ['role' => 'admin'],
|
|
|
|
|
'route' => 'test.page.index',
|
|
|
|
|
'name' => 'Test'
|
|
|
|
|
]]]
|
|
|
|
|
['navigations' => [
|
|
|
|
|
'navigation' => [
|
|
|
|
|
['@attributes' => ['role' => 'admin'], 'route' => 'test.page.index', 'name' => 'Test']
|
|
|
|
|
],
|
|
|
|
|
]],
|
|
|
|
|
]
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testWithAppManagerAndApporder() {
|
|
|
|
|
$l = $this->createMock(IL10N::class);
|
|
|
|
|
$l->expects($this->any())->method('t')->willReturnCallback(function ($text, $parameters = []) {
|
|
|
|
|
return vsprintf($text, $parameters);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$testOrder = 12;
|
|
|
|
|
$expected = [
|
|
|
|
|
'test' => [
|
|
|
|
|
'type' => 'link',
|
|
|
|
|
'id' => 'test',
|
|
|
|
|
'order' => $testOrder,
|
|
|
|
|
'href' => '/apps/test/',
|
|
|
|
|
'name' => 'Test',
|
|
|
|
|
'icon' => '/apps/test/img/app.svg',
|
|
|
|
|
'active' => false,
|
|
|
|
|
'classes' => '',
|
|
|
|
|
'unread' => 0,
|
|
|
|
|
],
|
|
|
|
|
];
|
|
|
|
|
$navigation = ['navigations' => [
|
|
|
|
|
'navigation' => [
|
|
|
|
|
['route' => 'test.page.index', 'name' => 'Test']
|
|
|
|
|
],
|
|
|
|
|
]];
|
|
|
|
|
|
|
|
|
|
$this->config->method('getUserValue')
|
|
|
|
|
->willReturnCallback(
|
|
|
|
|
function (string $userId, string $appName, string $key, mixed $default = '') use ($testOrder) {
|
|
|
|
|
$this->assertEquals('user001', $userId);
|
|
|
|
|
if ($key === 'apporder') {
|
|
|
|
|
return json_encode(['test' => [$testOrder]]);
|
|
|
|
|
}
|
|
|
|
|
return $default;
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$this->appManager->expects($this->any())
|
|
|
|
|
->method('isEnabledForUser')
|
|
|
|
|
->with('theming')
|
|
|
|
|
->willReturn(true);
|
|
|
|
|
$this->appManager->expects($this->once())->method('getAppInfo')->with('test')->willReturn($navigation);
|
|
|
|
|
$this->l10nFac->expects($this->any())->method('get')->willReturn($l);
|
|
|
|
|
$this->urlGenerator->expects($this->any())->method('imagePath')->willReturnCallback(function ($appName, $file) {
|
|
|
|
|
return "/apps/$appName/img/$file";
|
|
|
|
|
});
|
|
|
|
|
$this->urlGenerator->expects($this->any())->method('linkToRoute')->willReturnCallback(function ($route) {
|
|
|
|
|
if ($route === 'core.login.logout') {
|
|
|
|
|
return 'https://example.com/logout';
|
|
|
|
|
}
|
|
|
|
|
return '/apps/test/';
|
|
|
|
|
});
|
|
|
|
|
$user = $this->createMock(IUser::class);
|
|
|
|
|
$user->expects($this->any())->method('getUID')->willReturn('user001');
|
|
|
|
|
$this->userSession->expects($this->any())->method('getUser')->willReturn($user);
|
|
|
|
|
$this->userSession->expects($this->any())->method('isLoggedIn')->willReturn(true);
|
|
|
|
|
$this->appManager->expects($this->any())
|
|
|
|
|
->method('getEnabledAppsForUser')
|
|
|
|
|
->with($user)
|
|
|
|
|
->willReturn(['test']);
|
|
|
|
|
$this->groupManager->expects($this->any())->method('isAdmin')->willReturn(false);
|
|
|
|
|
$subadmin = $this->createMock(SubAdmin::class);
|
|
|
|
|
$subadmin->expects($this->any())->method('isSubAdmin')->with($user)->willReturn(false);
|
|
|
|
|
$this->groupManager->expects($this->any())->method('getSubAdmin')->willReturn($subadmin);
|
|
|
|
|
|
|
|
|
|
$this->navigationManager->clear();
|
|
|
|
|
$entries = $this->navigationManager->getAll();
|
|
|
|
|
$this->assertEquals($expected, $entries);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|