mirror of
https://github.com/nextcloud/server.git
synced 2026-02-18 18:28:50 -05:00
Fixing tests
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
This commit is contained in:
parent
5b9a8f0407
commit
0a3ef8b74b
10 changed files with 56 additions and 300 deletions
|
|
@ -39,6 +39,13 @@ namespace OCA\Files\AppInfo;
|
|||
|
||||
use OCA\Files\Controller\OpenLocalEditorController;
|
||||
|
||||
// Legacy routes above
|
||||
/** @var $this \OC\Route\Router */
|
||||
$this->create('files_ajax_download', 'apps/files/ajax/download.php')
|
||||
->actionInclude('files/ajax/download.php');
|
||||
$this->create('files_ajax_list', 'apps/files/ajax/list.php')
|
||||
->actionInclude('files/ajax/list.php');
|
||||
|
||||
/** @var Application $application */
|
||||
$application = \OC::$server->query(Application::class);
|
||||
$application->registerRoutes(
|
||||
|
|
@ -207,10 +214,3 @@ $application->registerRoutes(
|
|||
],
|
||||
]
|
||||
);
|
||||
|
||||
/** @var $this \OC\Route\Router */
|
||||
|
||||
$this->create('files_ajax_download', 'apps/files/ajax/download.php')
|
||||
->actionInclude('files/ajax/download.php');
|
||||
$this->create('files_ajax_list', 'apps/files/ajax/list.php')
|
||||
->actionInclude('files/ajax/list.php');
|
||||
|
|
|
|||
|
|
@ -289,7 +289,7 @@ class ApiController extends Controller {
|
|||
* @param string|bool $value
|
||||
* @return JSONResponse
|
||||
*/
|
||||
public function setConfig(string $key, string|bool $value): JSONResponse {
|
||||
public function setConfig(string $key, $value): JSONResponse {
|
||||
try {
|
||||
$this->userConfig->setConfig($key, (string)$value);
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
|
|
|
|||
|
|
@ -175,13 +175,13 @@ class ViewController extends Controller {
|
|||
*/
|
||||
public function index($dir = '', $view = '', $fileid = null, $fileNotFound = false, $openfile = null) {
|
||||
|
||||
// if ($fileid !== null && $dir === '') {
|
||||
// try {
|
||||
// return $this->redirectToFile($fileid);
|
||||
// } catch (NotFoundException $e) {
|
||||
// return new RedirectResponse($this->urlGenerator->linkToRoute('files.view.index', ['fileNotFound' => true]));
|
||||
// }
|
||||
// }
|
||||
if ($fileid !== null && $dir === '') {
|
||||
try {
|
||||
return $this->redirectToFile($fileid);
|
||||
} catch (NotFoundException $e) {
|
||||
return new RedirectResponse($this->urlGenerator->linkToRoute('files.view.index', ['fileNotFound' => true]));
|
||||
}
|
||||
}
|
||||
|
||||
$nav = new \OCP\Template('files', 'appnavigation', '');
|
||||
|
||||
|
|
|
|||
|
|
@ -42,8 +42,7 @@ class UserConfig {
|
|||
];
|
||||
|
||||
protected IConfig $config;
|
||||
/** @var \OCP\IUser|null */
|
||||
protected mixed $user = null;
|
||||
protected ?IUser $user = null;
|
||||
|
||||
public function __construct(IConfig $config, IUserSession $userSession) {
|
||||
$this->config = $config;
|
||||
|
|
@ -81,7 +80,7 @@ class UserConfig {
|
|||
* @param string $key a valid config key
|
||||
* @return string|bool
|
||||
*/
|
||||
private function getDefaultConfigValue(string $key): string|bool {
|
||||
private function getDefaultConfigValue(string $key) {
|
||||
foreach (self::ALLOWED_CONFIGS as $config) {
|
||||
if ($config['key'] === $key) {
|
||||
return $config['default'];
|
||||
|
|
@ -94,11 +93,11 @@ class UserConfig {
|
|||
* Set a user config
|
||||
*
|
||||
* @param string $key
|
||||
* @param string $value
|
||||
* @param string|bool $value
|
||||
* @throws \Exception
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function setConfig($key, $value) {
|
||||
public function setConfig(string $key, $value): void {
|
||||
if ($this->user === null) {
|
||||
throw new \Exception('No user logged in');
|
||||
}
|
||||
|
|
@ -129,7 +128,7 @@ class UserConfig {
|
|||
}
|
||||
|
||||
$userId = $this->user->getUID();
|
||||
$userConfigs = array_map(function(string $key) use ($userId): string|bool {
|
||||
$userConfigs = array_map(function(string $key) use ($userId) {
|
||||
$value = $this->config->getUserValue($userId, Application::APP_ID, $key, $this->getDefaultConfigValue($key));
|
||||
// If the default is expected to be a boolean, we need to cast the value
|
||||
if (is_bool($this->getDefaultConfigValue($key))) {
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
namespace OCA\Files\Controller;
|
||||
|
||||
use OCA\Files\Service\TagService;
|
||||
use OCA\Files\Service\UserConfig;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Http\DataResponse;
|
||||
use OCP\Files\File;
|
||||
|
|
@ -67,6 +68,8 @@ class ApiControllerTest extends TestCase {
|
|||
private $config;
|
||||
/** @var Folder|\PHPUnit\Framework\MockObject\MockObject */
|
||||
private $userFolder;
|
||||
/** @var UserConfig|\PHPUnit\Framework\MockObject\MockObject */
|
||||
private $userConfig;
|
||||
|
||||
protected function setUp(): void {
|
||||
parent::setUp();
|
||||
|
|
@ -95,6 +98,7 @@ class ApiControllerTest extends TestCase {
|
|||
$this->userFolder = $this->getMockBuilder(Folder::class)
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$this->userConfig = $this->createMock(UserConfig::class);
|
||||
|
||||
$this->apiController = new ApiController(
|
||||
$this->appName,
|
||||
|
|
@ -104,7 +108,8 @@ class ApiControllerTest extends TestCase {
|
|||
$this->preview,
|
||||
$this->shareManager,
|
||||
$this->config,
|
||||
$this->userFolder
|
||||
$this->userFolder,
|
||||
$this->userConfig
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ namespace OCA\Files\Tests\Controller;
|
|||
|
||||
use OCA\Files\Activity\Helper;
|
||||
use OCA\Files\Controller\ViewController;
|
||||
use OCA\Files\Service\UserConfig;
|
||||
use OCP\App\IAppManager;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Services\IInitialState;
|
||||
|
|
@ -87,6 +88,8 @@ class ViewControllerTest extends TestCase {
|
|||
private $templateManager;
|
||||
/** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
|
||||
private $shareManager;
|
||||
/** @var UserConfig|\PHPUnit\Framework\MockObject\MockObject */
|
||||
private $userConfig;
|
||||
|
||||
protected function setUp(): void {
|
||||
parent::setUp();
|
||||
|
|
@ -109,6 +112,7 @@ class ViewControllerTest extends TestCase {
|
|||
$this->initialState = $this->createMock(IInitialState::class);
|
||||
$this->templateManager = $this->createMock(ITemplateManager::class);
|
||||
$this->shareManager = $this->createMock(IManager::class);
|
||||
$this->userConfig = $this->createMock(UserConfig::class);
|
||||
$this->viewController = $this->getMockBuilder('\OCA\Files\Controller\ViewController')
|
||||
->setConstructorArgs([
|
||||
'files',
|
||||
|
|
@ -124,6 +128,7 @@ class ViewControllerTest extends TestCase {
|
|||
$this->initialState,
|
||||
$this->templateManager,
|
||||
$this->shareManager,
|
||||
$this->userConfig,
|
||||
])
|
||||
->setMethods([
|
||||
'getStorageInfo',
|
||||
|
|
@ -166,7 +171,6 @@ class ViewControllerTest extends TestCase {
|
|||
$nav->assign('usage', '123 B');
|
||||
$nav->assign('quota', 100);
|
||||
$nav->assign('total_space', '100 B');
|
||||
$nav->assign('webdav_url', 'http://localhost/remote.php/dav/files/testuser1/');
|
||||
$nav->assign('navigationItems', [
|
||||
'files' => [
|
||||
'id' => 'files',
|
||||
|
|
@ -178,6 +182,7 @@ class ViewControllerTest extends TestCase {
|
|||
'icon' => '',
|
||||
'type' => 'link',
|
||||
'classes' => '',
|
||||
'expanded' => false,
|
||||
'unread' => 0,
|
||||
],
|
||||
'recent' => [
|
||||
|
|
@ -190,6 +195,7 @@ class ViewControllerTest extends TestCase {
|
|||
'icon' => '',
|
||||
'type' => 'link',
|
||||
'classes' => '',
|
||||
'expanded' => false,
|
||||
'unread' => 0,
|
||||
],
|
||||
'favorites' => [
|
||||
|
|
@ -211,8 +217,7 @@ class ViewControllerTest extends TestCase {
|
|||
'order' => 6,
|
||||
'folderPosition' => 1,
|
||||
'name' => 'test1',
|
||||
'icon' => 'files',
|
||||
'quickaccesselement' => 'true',
|
||||
'icon' => 'folder',
|
||||
],
|
||||
[
|
||||
'name' => 'test2',
|
||||
|
|
@ -222,8 +227,7 @@ class ViewControllerTest extends TestCase {
|
|||
'dir' => '/test2/',
|
||||
'order' => 7,
|
||||
'folderPosition' => 2,
|
||||
'icon' => 'files',
|
||||
'quickaccesselement' => 'true',
|
||||
'icon' => 'folder',
|
||||
],
|
||||
[
|
||||
'name' => 'sub4',
|
||||
|
|
@ -233,8 +237,7 @@ class ViewControllerTest extends TestCase {
|
|||
'dir' => '/test3/sub4',
|
||||
'order' => 8,
|
||||
'folderPosition' => 3,
|
||||
'icon' => 'files',
|
||||
'quickaccesselement' => 'true',
|
||||
'icon' => 'folder',
|
||||
],
|
||||
[
|
||||
'name' => 'sub6',
|
||||
|
|
@ -244,8 +247,7 @@ class ViewControllerTest extends TestCase {
|
|||
'dir' => '/test5/sub6/',
|
||||
'order' => 9,
|
||||
'folderPosition' => 4,
|
||||
'icon' => 'files',
|
||||
'quickaccesselement' => 'true',
|
||||
'icon' => 'folder',
|
||||
],
|
||||
],
|
||||
'expanded' => false,
|
||||
|
|
@ -261,6 +263,7 @@ class ViewControllerTest extends TestCase {
|
|||
'icon' => '',
|
||||
'type' => 'link',
|
||||
'classes' => '',
|
||||
'expanded' => false,
|
||||
'unread' => 0,
|
||||
],
|
||||
'trashbin' => [
|
||||
|
|
@ -273,6 +276,7 @@ class ViewControllerTest extends TestCase {
|
|||
'icon' => '',
|
||||
'type' => 'link',
|
||||
'classes' => 'pinned',
|
||||
'expanded' => false,
|
||||
'unread' => 0,
|
||||
],
|
||||
'shareoverview' => [
|
||||
|
|
@ -405,7 +409,7 @@ class ViewControllerTest extends TestCase {
|
|||
],
|
||||
],
|
||||
'hiddenFields' => [],
|
||||
'showgridview' => false
|
||||
'showgridview' => null
|
||||
]
|
||||
);
|
||||
$policy = new Http\ContentSecurityPolicy();
|
||||
|
|
|
|||
|
|
@ -1,244 +0,0 @@
|
|||
/**
|
||||
* @copyright 2014 Vincent Petry <pvince81@owncloud.com>
|
||||
*
|
||||
* @author John Molakvoæ <skjnldsv@protonmail.com>
|
||||
* @author Vincent Petry <vincent@nextcloud.com>
|
||||
*
|
||||
* @license AGPL-3.0-or-later
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
describe('OCA.Files.App tests', function() {
|
||||
var App = OCA.Files.App;
|
||||
var pushStateStub;
|
||||
var replaceStateStub;
|
||||
var parseUrlQueryStub;
|
||||
|
||||
beforeEach(function() {
|
||||
$('#testArea').append(
|
||||
'<div id="content" class="app-files">' +
|
||||
'<div id="app-navigation">' +
|
||||
'<ul><li data-id="files"><a>Files</a></li>' +
|
||||
'<li data-id="other"><a>Other</a></li>' +
|
||||
'</div>' +
|
||||
'<div id="app-content">' +
|
||||
'<div id="app-content-files" class="hidden">' +
|
||||
'</div>' +
|
||||
'<div id="app-content-other" class="hidden">' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'</div>'
|
||||
);
|
||||
|
||||
OCA.Files.fileActions = new OCA.Files.FileActions();
|
||||
|
||||
pushStateStub = sinon.stub(OC.Util.History, 'pushState');
|
||||
replaceStateStub = sinon.stub(OC.Util.History, 'replaceState');
|
||||
parseUrlQueryStub = sinon.stub(OC.Util.History, 'parseUrlQuery');
|
||||
parseUrlQueryStub.returns({});
|
||||
|
||||
App.initialize();
|
||||
});
|
||||
afterEach(function() {
|
||||
App.destroy();
|
||||
|
||||
pushStateStub.restore();
|
||||
replaceStateStub.restore();
|
||||
parseUrlQueryStub.restore();
|
||||
});
|
||||
|
||||
describe('initialization', function() {
|
||||
it('initializes the default file list with the default file actions', function() {
|
||||
expect(App.fileList).toBeDefined();
|
||||
expect(App.fileList.fileActions.actions.all).toBeDefined();
|
||||
expect(App.fileList.$el.is('#app-content-files')).toEqual(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe('URL handling', function() {
|
||||
it('pushes the state to the URL when current app changed directory', function() {
|
||||
$('#app-content-files').trigger(new $.Event('changeDirectory', {dir: 'sub dir'}));
|
||||
expect(pushStateStub.calledOnce).toEqual(true);
|
||||
var params = OC.parseQueryString(pushStateStub.getCall(0).args[0]);
|
||||
expect(params.dir).toEqual('sub dir');
|
||||
expect(params.view).not.toBeDefined();
|
||||
|
||||
$('li[data-id=other]>a').click();
|
||||
pushStateStub.reset();
|
||||
|
||||
$('#app-content-other').trigger(new $.Event('changeDirectory', {dir: 'sub dir'}));
|
||||
expect(pushStateStub.calledOnce).toEqual(true);
|
||||
params = OC.parseQueryString(pushStateStub.getCall(0).args[0]);
|
||||
expect(params.dir).toEqual('sub dir');
|
||||
expect(params.view).toEqual('other');
|
||||
});
|
||||
it('replaces the state to the URL when fileid is known', function() {
|
||||
$('#app-content-files').trigger(new $.Event('changeDirectory', {dir: 'sub dir'}));
|
||||
expect(pushStateStub.calledOnce).toEqual(true);
|
||||
var params = OC.parseQueryString(pushStateStub.getCall(0).args[0]);
|
||||
expect(params.dir).toEqual('sub dir');
|
||||
expect(params.view).not.toBeDefined();
|
||||
expect(replaceStateStub.notCalled).toEqual(true);
|
||||
|
||||
parseUrlQueryStub.returns({dir: 'sub dir'});
|
||||
|
||||
$('#app-content-files').trigger(new $.Event('afterChangeDirectory', {dir: 'sub dir', fileId: 123}));
|
||||
|
||||
expect(pushStateStub.calledOnce).toEqual(true);
|
||||
expect(replaceStateStub.calledOnce).toEqual(true);
|
||||
params = OC.parseQueryString(replaceStateStub.getCall(0).args[0]);
|
||||
expect(params.dir).toEqual('sub dir');
|
||||
expect(params.view).not.toBeDefined();
|
||||
expect(params.fileid).toEqual('123');
|
||||
});
|
||||
describe('onpopstate', function() {
|
||||
it('sends "urlChanged" event to current app', function() {
|
||||
var handler = sinon.stub();
|
||||
$('#app-content-files').on('urlChanged', handler);
|
||||
App._onPopState({view: 'files', dir: '/somedir'});
|
||||
expect(handler.calledOnce).toEqual(true);
|
||||
expect(handler.getCall(0).args[0].view).toEqual('files');
|
||||
expect(handler.getCall(0).args[0].dir).toEqual('/somedir');
|
||||
});
|
||||
it('sends "show" event to current app and sets navigation', function() {
|
||||
var showHandlerFiles = sinon.stub();
|
||||
var showHandlerOther = sinon.stub();
|
||||
var hideHandlerFiles = sinon.stub();
|
||||
var hideHandlerOther = sinon.stub();
|
||||
$('#app-content-files').on('show', showHandlerFiles);
|
||||
$('#app-content-files').on('hide', hideHandlerFiles);
|
||||
$('#app-content-other').on('show', showHandlerOther);
|
||||
$('#app-content-other').on('hide', hideHandlerOther);
|
||||
App._onPopState({view: 'other', dir: '/somedir'});
|
||||
expect(showHandlerFiles.notCalled).toEqual(true);
|
||||
expect(hideHandlerFiles.calledOnce).toEqual(true);
|
||||
expect(showHandlerOther.calledOnce).toEqual(true);
|
||||
expect(hideHandlerOther.notCalled).toEqual(true);
|
||||
|
||||
showHandlerFiles.reset();
|
||||
showHandlerOther.reset();
|
||||
hideHandlerFiles.reset();
|
||||
hideHandlerOther.reset();
|
||||
|
||||
App._onPopState({view: 'files', dir: '/somedir'});
|
||||
expect(showHandlerFiles.calledOnce).toEqual(true);
|
||||
expect(hideHandlerFiles.notCalled).toEqual(true);
|
||||
expect(showHandlerOther.notCalled).toEqual(true);
|
||||
expect(hideHandlerOther.calledOnce).toEqual(true);
|
||||
|
||||
expect(App.navigation.getActiveItem()).toEqual('files');
|
||||
expect($('#app-content-files').hasClass('hidden')).toEqual(false);
|
||||
expect($('#app-content-other').hasClass('hidden')).toEqual(true);
|
||||
});
|
||||
it('does not send "show" or "hide" event to current app when already visible', function() {
|
||||
var showHandler = sinon.stub();
|
||||
var hideHandler = sinon.stub();
|
||||
$('#app-content-files').on('show', showHandler);
|
||||
$('#app-content-files').on('hide', hideHandler);
|
||||
App._onPopState({view: 'files', dir: '/somedir'});
|
||||
expect(showHandler.notCalled).toEqual(true);
|
||||
expect(hideHandler.notCalled).toEqual(true);
|
||||
});
|
||||
it('state defaults to files app with root dir', function() {
|
||||
var handler = sinon.stub();
|
||||
parseUrlQueryStub.returns({});
|
||||
$('#app-content-files').on('urlChanged', handler);
|
||||
App._onPopState();
|
||||
expect(handler.calledOnce).toEqual(true);
|
||||
expect(handler.getCall(0).args[0].view).toEqual('files');
|
||||
expect(handler.getCall(0).args[0].dir).toEqual('/');
|
||||
});
|
||||
it('activates files app if invalid view is passed', function() {
|
||||
App._onPopState({view: 'invalid', dir: '/somedir'});
|
||||
|
||||
expect(App.navigation.getActiveItem()).toEqual('files');
|
||||
expect($('#app-content-files').hasClass('hidden')).toEqual(false);
|
||||
});
|
||||
});
|
||||
describe('navigation', function() {
|
||||
it('switches the navigation item and panel visibility when onpopstate', function() {
|
||||
App._onPopState({view: 'other', dir: '/somedir'});
|
||||
expect(App.navigation.getActiveItem()).toEqual('other');
|
||||
expect($('#app-content-files').hasClass('hidden')).toEqual(true);
|
||||
expect($('#app-content-other').hasClass('hidden')).toEqual(false);
|
||||
expect($('li[data-id=files] > a').hasClass('active')).toEqual(false);
|
||||
expect($('li[data-id=other] > a').hasClass('active')).toEqual(true);
|
||||
|
||||
App._onPopState({view: 'files', dir: '/somedir'});
|
||||
|
||||
expect(App.navigation.getActiveItem()).toEqual('files');
|
||||
expect($('#app-content-files').hasClass('hidden')).toEqual(false);
|
||||
expect($('#app-content-other').hasClass('hidden')).toEqual(true);
|
||||
expect($('li[data-id=files] > a').hasClass('active')).toEqual(true);
|
||||
expect($('li[data-id=other] > a').hasClass('active')).toEqual(false);
|
||||
});
|
||||
it('clicking on navigation switches the panel visibility', function() {
|
||||
$('li[data-id=other] > a').click();
|
||||
expect(App.navigation.getActiveItem()).toEqual('other');
|
||||
expect($('#app-content-files').hasClass('hidden')).toEqual(true);
|
||||
expect($('#app-content-other').hasClass('hidden')).toEqual(false);
|
||||
expect($('li[data-id=files] > a').hasClass('active')).toEqual(false);
|
||||
expect($('li[data-id=other] > a').hasClass('active')).toEqual(true);
|
||||
|
||||
$('li[data-id=files] > a').click();
|
||||
expect(App.navigation.getActiveItem()).toEqual('files');
|
||||
expect($('#app-content-files').hasClass('hidden')).toEqual(false);
|
||||
expect($('#app-content-other').hasClass('hidden')).toEqual(true);
|
||||
expect($('li[data-id=files] > a').hasClass('active')).toEqual(true);
|
||||
expect($('li[data-id=other] > a').hasClass('active')).toEqual(false);
|
||||
});
|
||||
it('clicking on navigation sends "show" and "urlChanged" event', function() {
|
||||
var handler = sinon.stub();
|
||||
var showHandler = sinon.stub();
|
||||
$('#app-content-other').on('urlChanged', handler);
|
||||
$('#app-content-other').on('show', showHandler);
|
||||
$('li[data-id=other] > a').click();
|
||||
expect(handler.calledOnce).toEqual(true);
|
||||
expect(handler.getCall(0).args[0].view).toEqual('other');
|
||||
expect(handler.getCall(0).args[0].dir).toEqual('/');
|
||||
expect(showHandler.calledOnce).toEqual(true);
|
||||
});
|
||||
it('clicking on activate navigation only sends "urlChanged" event', function() {
|
||||
var handler = sinon.stub();
|
||||
var showHandler = sinon.stub();
|
||||
$('#app-content-files').on('urlChanged', handler);
|
||||
$('#app-content-files').on('show', showHandler);
|
||||
$('li[data-id=files] > a').click();
|
||||
expect(handler.calledOnce).toEqual(true);
|
||||
expect(handler.getCall(0).args[0].view).toEqual('files');
|
||||
expect(handler.getCall(0).args[0].dir).toEqual('/');
|
||||
expect(showHandler.notCalled).toEqual(true);
|
||||
});
|
||||
});
|
||||
describe('viewer mode', function() {
|
||||
it('toggles the sidebar when viewer mode is enabled', function() {
|
||||
$('#app-content-files').trigger(
|
||||
new $.Event('changeViewerMode', {viewerModeEnabled: true}
|
||||
));
|
||||
expect($('#app-navigation').hasClass('hidden')).toEqual(true);
|
||||
expect($('.app-files').hasClass('viewer-mode no-sidebar')).toEqual(true);
|
||||
|
||||
$('#app-content-files').trigger(
|
||||
new $.Event('changeViewerMode', {viewerModeEnabled: false}
|
||||
));
|
||||
|
||||
expect($('#app-navigation').hasClass('hidden')).toEqual(false);
|
||||
expect($('.app-files').hasClass('viewer-mode no-sidebar')).toEqual(false);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -515,9 +515,9 @@ describe('OCA.Files.FileList tests', function() {
|
|||
});
|
||||
it('toggles the list\'s class when toggling hidden files', function() {
|
||||
expect(fileList.$el.hasClass('hide-hidden-files')).toEqual(false);
|
||||
filesConfig.set('showhidden', false);
|
||||
window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: false });
|
||||
expect(fileList.$el.hasClass('hide-hidden-files')).toEqual(true);
|
||||
filesConfig.set('showhidden', true);
|
||||
window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: true })
|
||||
expect(fileList.$el.hasClass('hide-hidden-files')).toEqual(false);
|
||||
});
|
||||
});
|
||||
|
|
@ -1371,7 +1371,7 @@ describe('OCA.Files.FileList tests', function() {
|
|||
expect($('.files-fileList tr').length).toEqual(20);
|
||||
});
|
||||
it('renders the full first page despite hidden rows', function() {
|
||||
filesConfig.set('showhidden', false);
|
||||
window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: false });
|
||||
var files = _.map(generateFiles(0, 23), function(data) {
|
||||
return _.extend(data, {
|
||||
name: '.' + data.name
|
||||
|
|
@ -1385,7 +1385,7 @@ describe('OCA.Files.FileList tests', function() {
|
|||
expect($('.files-fileList tr').length).toEqual(25);
|
||||
});
|
||||
it('renders the full first page despite hidden rows', function() {
|
||||
filesConfig.set('showhidden', true);
|
||||
window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: true });
|
||||
var files = _.map(generateFiles(0, 23), function(data) {
|
||||
return _.extend(data, {
|
||||
name: '.' + data.name
|
||||
|
|
@ -1817,18 +1817,6 @@ describe('OCA.Files.FileList tests', function() {
|
|||
$('#app-content-files').trigger(new $.Event('urlChanged', {view: 'files', dir: '/somedir'}));
|
||||
expect(fileList.getCurrentDirectory()).toEqual('/somedir');
|
||||
});
|
||||
it('reloads the list when leaving hidden state', function() {
|
||||
var reloadStub = sinon.stub(fileList, 'reload');
|
||||
|
||||
// First show should not trigger
|
||||
$('#app-content-files').trigger(new $.Event('show'));
|
||||
expect(reloadStub.calledOnce).toEqual(false);
|
||||
|
||||
// Second show should!
|
||||
$('#app-content-files').trigger(new $.Event('show'));
|
||||
expect(reloadStub.calledOnce).toEqual(true);
|
||||
reloadStub.restore();
|
||||
});
|
||||
it('refreshes breadcrumb after update', function() {
|
||||
var setDirSpy = sinon.spy(fileList.breadcrumb, 'setDirectory');
|
||||
fileList.changeDirectory('/anothersubdir');
|
||||
|
|
@ -2014,7 +2002,7 @@ describe('OCA.Files.FileList tests', function() {
|
|||
expect($('.select-all').prop('checked')).toEqual(false);
|
||||
});
|
||||
it('Selecting all files also selects hidden files when invisible', function() {
|
||||
filesConfig.set('showhidden', false);
|
||||
window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: false });
|
||||
var $tr = fileList.add(new FileInfo({
|
||||
name: '.hidden',
|
||||
type: 'dir',
|
||||
|
|
@ -2103,7 +2091,7 @@ describe('OCA.Files.FileList tests', function() {
|
|||
expect($summary.text()).toEqual('Name');
|
||||
});
|
||||
it('Displays the number of hidden files in selection summary if hidden files are invisible', function() {
|
||||
filesConfig.set('showhidden', false);
|
||||
window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: false });
|
||||
var $tr = fileList.add(new FileInfo({
|
||||
name: '.hidden',
|
||||
type: 'dir',
|
||||
|
|
@ -2115,7 +2103,7 @@ describe('OCA.Files.FileList tests', function() {
|
|||
expect($summary.text()).toEqual('2 folders and 3 files (including 1 hidden)');
|
||||
});
|
||||
it('Does not displays the number of hidden files in selection summary if hidden files are visible', function() {
|
||||
filesConfig.set('showhidden', true);
|
||||
window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: true });
|
||||
var $tr = fileList.add(new FileInfo({
|
||||
name: '.hidden',
|
||||
type: 'dir',
|
||||
|
|
@ -2127,7 +2115,7 @@ describe('OCA.Files.FileList tests', function() {
|
|||
expect($summary.text()).toEqual('2 folders and 3 files');
|
||||
});
|
||||
it('Toggling hidden file visibility updates selection summary', function() {
|
||||
filesConfig.set('showhidden', false);
|
||||
window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: false });
|
||||
var $tr = fileList.add(new FileInfo({
|
||||
name: '.hidden',
|
||||
type: 'dir',
|
||||
|
|
@ -2137,7 +2125,7 @@ describe('OCA.Files.FileList tests', function() {
|
|||
$('.select-all').click();
|
||||
var $summary = $('.column-name a.name>span:first');
|
||||
expect($summary.text()).toEqual('2 folders and 3 files (including 1 hidden)');
|
||||
filesConfig.set('showhidden', true);
|
||||
window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: true });
|
||||
expect($summary.text()).toEqual('2 folders and 3 files');
|
||||
});
|
||||
it('Select/deselect files shows/hides file actions', function() {
|
||||
|
|
|
|||
|
|
@ -204,7 +204,8 @@ describe('OCA.Files.FileSummary tests', function() {
|
|||
});
|
||||
|
||||
it('renders hidden count section when hidden files are hidden', function() {
|
||||
config.set('showhidden', false);
|
||||
window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: false });
|
||||
|
||||
summary.add({name: 'abc', type: 'file', size: 256000});
|
||||
summary.add({name: 'def', type: 'dir', size: 100});
|
||||
summary.add({name: '.hidden', type: 'dir', size: 512000});
|
||||
|
|
@ -217,7 +218,8 @@ describe('OCA.Files.FileSummary tests', function() {
|
|||
expect($container.find('.filesize').text()).toEqual('750 KB');
|
||||
});
|
||||
it('does not render hidden count section when hidden files exist but are visible', function() {
|
||||
config.set('showhidden', true);
|
||||
window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: true });
|
||||
|
||||
summary.add({name: 'abc', type: 'file', size: 256000});
|
||||
summary.add({name: 'def', type: 'dir', size: 100});
|
||||
summary.add({name: '.hidden', type: 'dir', size: 512000});
|
||||
|
|
@ -229,7 +231,8 @@ describe('OCA.Files.FileSummary tests', function() {
|
|||
expect($container.find('.filesize').text()).toEqual('750 KB');
|
||||
});
|
||||
it('does not render hidden count section when no hidden files exist', function() {
|
||||
config.set('showhidden', false);
|
||||
window._nc_event_bus.emit('files:config:updated', { key: 'show_hidden', value: false });
|
||||
|
||||
summary.add({name: 'abc', type: 'file', size: 256000});
|
||||
summary.add({name: 'def', type: 'dir', size: 100});
|
||||
summary.update();
|
||||
|
|
|
|||
|
|
@ -93,6 +93,7 @@ $expectedFiles = [
|
|||
'tsconfig.json',
|
||||
'vendor-bin',
|
||||
'version.php',
|
||||
'webpack.common.js',
|
||||
'webpack.config.js',
|
||||
'webpack.modules.js',
|
||||
];
|
||||
|
|
|
|||
Loading…
Reference in a new issue