Ver código fonte

Bump jquery from 2.2.4 to 3.1.0

Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
tags/v21.0.0beta1
Christoph Wurst 3 anos atrás
pai
commit
ae0a496da8
Nenhuma conta vinculada ao e-mail do autor do commit

+ 1
- 1
apps/files/js/dist/sidebar.js
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 1
- 1
apps/files/js/dist/sidebar.js.map
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 1
- 1
apps/files/js/filelist.js Ver arquivo

@@ -3699,7 +3699,7 @@
const enabled = tabView.canDisplay || undefined
if (tabView.id) {
OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({
id: tabView.id,
id: tabView.id,
name: tabView.getLabel(),
icon: tabView.getIcon(),
mount: function(el, fileInfo) {

+ 0
- 29
apps/files/tests/js/breadcrumbSpec.js Ver arquivo

@@ -207,35 +207,6 @@ describe('OCA.Files.BreadCrumb tests', function() {
bc = null;
});

it('Opens and closes the menu on click', function() {
// Menu exists
expect($popovermenu.length).toEqual(1);

// Disable jQuery delay
jQuery.fx.off = true

// Click on menu
$crumbmenuLink.click();
expect($popovermenu.is(':visible')).toEqual(true);

// Click on home
$(document).mouseup();
expect($popovermenu.is(':visible')).toEqual(false);

// Change directory and reset elements
bc.setDirectory('/one/two/three/four/five/six/seven/eight/nine/ten');
$crumbmenuLink = bc.$el.find('.crumbmenu > a');
$popovermenu = $crumbmenuLink.next('.popovermenu');

// Click on menu again
$crumbmenuLink.click();
expect($popovermenu.is(':visible')).toEqual(true);

// Click on home again
$(document).mouseup();
expect($popovermenu.is(':visible')).toEqual(false);

});
it('Shows only items not in the breadcrumb', function() {
var hiddenCrumbs = bc.$el.find('.crumb:not(.crumbmenu).hidden');
expect($popovermenu.find('li:not(.in-breadcrumb)').length).toEqual(hiddenCrumbs.length);

+ 22
- 18
apps/files/tests/js/favoritesfilelistspec.js Ver arquivo

@@ -58,7 +58,7 @@ describe('OCA.Files.FavoritesFileList tests', function() {
fileList.destroy();
fileList = undefined;
});
it('render files', function() {
it('render files', function(done) {
var deferred = $.Deferred();
fetchStub.returns(deferred.promise());

@@ -77,23 +77,27 @@ describe('OCA.Files.FavoritesFileList tests', function() {
mimetype: 'text/plain'
}]);

var $rows = fileList.$el.find('tbody tr');
var $tr = $rows.eq(0);
expect($rows.length).toEqual(1);
expect($tr.attr('data-id')).toEqual('7');
expect($tr.attr('data-type')).toEqual('file');
expect($tr.attr('data-file')).toEqual('test.txt');
expect($tr.attr('data-path')).toEqual('/somedir');
expect($tr.attr('data-size')).toEqual('123');
expect(parseInt($tr.attr('data-permissions'), 10))
.toEqual(OC.PERMISSION_ALL);
expect($tr.attr('data-mime')).toEqual('text/plain');
expect($tr.attr('data-mtime')).toEqual('11111000');
expect($tr.find('a.name').attr('href')).toEqual(
OC.getRootPath() +
'/remote.php/webdav/somedir/test.txt'
);
expect($tr.find('.nametext').text().trim()).toEqual('test.txt');
setTimeout(function() {
var $rows = fileList.$el.find('tbody tr');
var $tr = $rows.eq(0);
expect($rows.length).toEqual(1);
expect($tr.attr('data-id')).toEqual('7');
expect($tr.attr('data-type')).toEqual('file');
expect($tr.attr('data-file')).toEqual('test.txt');
expect($tr.attr('data-path')).toEqual('/somedir');
expect($tr.attr('data-size')).toEqual('123');
expect(parseInt($tr.attr('data-permissions'), 10))
.toEqual(OC.PERMISSION_ALL);
expect($tr.attr('data-mime')).toEqual('text/plain');
expect($tr.attr('data-mtime')).toEqual('11111000');
expect($tr.find('a.name').attr('href')).toEqual(
OC.getRootPath() +
'/remote.php/webdav/somedir/test.txt'
);
expect($tr.find('.nametext').text().trim()).toEqual('test.txt');

done();
}, 0);
});
});
});

+ 12
- 8
apps/files/tests/js/fileUploadSpec.js Ver arquivo

@@ -123,6 +123,7 @@ describe('OC.Upload tests', function() {
});
describe('Upload conflicts', function() {
var conflictDialogStub;
var clock;
var fileList;

beforeEach(function() {
@@ -162,6 +163,11 @@ describe('OC.Upload tests', function() {
deferred.resolve();
});
afterEach(function() {
if (clock) {
clock.restore();
clock = undefined
}

conflictDialogStub.restore();

fileList.destroy();
@@ -210,7 +216,7 @@ describe('OC.Upload tests', function() {
expect(result[1].submit.calledOnce).toEqual(false);
expect(result[2].submit.calledOnce).toEqual(true);
done();
}, 0);
}, 10);
});
var result = addFiles(uploader, [
{name: 'conflict.txt'},
@@ -251,8 +257,6 @@ describe('OC.Upload tests', function() {
uploader.onReplace(upload);
});
it('autorenames file when choosing replace in conflict mode', function(done) {
// needed for _.defer call
var clock = sinon.useFakeTimers();
var fileData = {name: 'conflict.txt'};
var uploadData = addFiles(uploader, [
fileData
@@ -272,15 +276,15 @@ describe('OC.Upload tests', function() {
expect(uploadData[0].submit.calledOnce).toEqual(true);
getResponseStatusStub.returns(412);
uploader.fileUploadParam.fail.call($dummyUploader[0], {}, uploadData[0]);
clock.tick(500);
}
if(counter===2)
{
expect(upload.getFileName()).toEqual('conflict (3).txt');
expect(uploadData[0].submit.calledTwice).toEqual(true);
_.defer(function() {
expect(upload.getFileName()).toEqual('conflict (3).txt');
expect(uploadData[0].submit.calledTwice).toEqual(true);

clock.restore();
done();
done();
})
}
});


+ 169
- 137
apps/files/tests/js/filelistSpec.js Ver arquivo

@@ -200,15 +200,6 @@ describe('OCA.Files.FileList tests', function() {
});
});
describe('Adding files', function() {
var clock, now;
beforeEach(function() {
// to prevent date comparison issues
clock = sinon.useFakeTimers();
now = new Date();
});
afterEach(function() {
clock.restore();
});
it('generates file element with correct attributes when calling add() with file data', function() {
var fileData = new FileInfo({
id: 18,
@@ -300,7 +291,6 @@ describe('OCA.Files.FileList tests', function() {
name: 'testFile.txt'
};

clock.tick(123456);
var $tr = fileList.add(fileData);

expect($tr).toBeDefined();
@@ -312,7 +302,6 @@ describe('OCA.Files.FileList tests', function() {
expect($tr.attr('data-etag')).toBeUndefined();
expect($tr.attr('data-permissions')).toEqual('31');
expect($tr.attr('data-mime')).toBeUndefined();
expect($tr.attr('data-mtime')).toEqual('123456');
expect($tr.attr('data-e2eencrypted')).toEqual('false');

expect($tr.find('.filesize').text()).toEqual('Pending');
@@ -323,7 +312,6 @@ describe('OCA.Files.FileList tests', function() {
type: 'dir',
name: 'testFolder'
};
clock.tick(123456);
var $tr = fileList.add(fileData);

expect($tr).toBeDefined();
@@ -335,7 +323,6 @@ describe('OCA.Files.FileList tests', function() {
expect($tr.attr('data-etag')).toBeUndefined();
expect($tr.attr('data-permissions')).toEqual('31');
expect($tr.attr('data-mime')).toEqual('httpd/unix-directory');
expect($tr.attr('data-mtime')).toEqual('123456');
expect($tr.attr('data-e2eencrypted')).toEqual('false');

expect($tr.find('.filesize').text()).toEqual('Pending');
@@ -584,7 +571,6 @@ describe('OCA.Files.FileList tests', function() {
deferredDelete1.resolve(200);
deferredDelete2.resolve(200);
return promise.then(function(){

expect(fileList.findFileEl('One.txt').length).toEqual(0);
expect(fileList.findFileEl('Two.jpg').length).toEqual(0);
expect(fileList.findFileEl('Three.pdf').length).toEqual(1);
@@ -602,8 +588,7 @@ describe('OCA.Files.FileList tests', function() {
expect($('#emptycontent').hasClass('hidden')).toEqual(true);

expect(notificationStub.notCalled).toEqual(true);
done();
});
}).then(done, done);
});
it('shows busy state on files to be deleted', function(done) {
fileList.setFiles(testFiles);
@@ -633,8 +618,7 @@ describe('OCA.Files.FileList tests', function() {
return promise.then(function(){
expect(fileList.findFileEl('One.txt').hasClass('busy')).toEqual(false);
expect(fileList.findFileEl('Two.jpg').hasClass('busy')).toEqual(false);
done();
});
}).then(done, done);
});
it('shows busy state on all files when deleting all', function(done) {
fileList.setFiles(testFiles);
@@ -656,8 +640,7 @@ describe('OCA.Files.FileList tests', function() {
}
return promise.then(function(){
expect(count).toEqual(4);
done();
});
}).then(done, done);
});
it('updates summary when deleting last file', function(done) {
var $summary;
@@ -673,8 +656,7 @@ describe('OCA.Files.FileList tests', function() {
expect(fileList.files.length).toEqual(0);
expect($('#filestable thead th').hasClass('hidden')).toEqual(true);
expect($('#emptycontent').hasClass('hidden')).toEqual(false);
done();
});
}).then(done, done);
});
it('bring back deleted item when delete call failed', function(done) {
fileList.setFiles(testFiles);
@@ -688,8 +670,7 @@ describe('OCA.Files.FileList tests', function() {
expect(fileList.$fileList.find('tr').length).toEqual(4);

expect(notificationStub.calledTwice).toEqual(true);
done();
});
}).then(done, done);
});
it('remove file from list if delete call returned 404 not found', function(done) {
fileList.setFiles(testFiles);
@@ -702,8 +683,7 @@ describe('OCA.Files.FileList tests', function() {
expect(fileList.$fileList.find('tr').length).toEqual(2);

expect(notificationStub.notCalled).toEqual(true);
done();
});
}).then(done, done);
});
});
describe('Renaming files', function() {
@@ -870,7 +850,7 @@ describe('OCA.Files.FileList tests', function() {
expect(fileList.$fileList.find('input.filename').length).toEqual(0);
expect(fileList.$fileList.find('form').length).toEqual(0);
});
it('Restores thumbnail when rename was cancelled', function() {
it('Restores thumbnail when rename was cancelled', function(done) {
doRename();

expect(fileList.findFileEl('Tu_after_three.txt').find('.thumbnail').parent().attr('class'))
@@ -878,9 +858,11 @@ describe('OCA.Files.FileList tests', function() {

deferredRename.reject(409);

expect(fileList.findFileEl('One.txt').length).toEqual(1);
expect(OC.TestUtil.getImageUrl(fileList.findFileEl('One.txt').find('.thumbnail')))
.toEqual(OC.imagePath('core', 'filetypes/text.svg'));
return Promise.resolve().then(function() {
expect(fileList.findFileEl('One.txt').length).toEqual(1);
expect(OC.TestUtil.getImageUrl(fileList.findFileEl('One.txt').find('.thumbnail')))
.toEqual(OC.imagePath('core', 'filetypes/text.svg'));
}).then(done, done);
});
});
describe('Moving files', function() {
@@ -917,8 +899,7 @@ describe('OCA.Files.FileList tests', function() {
expect(fileList.findFileEl('somedir').find('.filesize').text()).toEqual('262 B');

expect(notificationStub.notCalled).toEqual(true);
done();
});
}).then(done, done);
});
it('Moves list of files to target folder', function(done) {
var deferredMove1 = $.Deferred();
@@ -954,8 +935,7 @@ describe('OCA.Files.FileList tests', function() {
expect(fileList.findFileEl('somedir').find('.filesize').text()).toEqual('12 KB');

expect(notificationStub.notCalled).toEqual(true);
done();
});
}).then(done, done);
});
it('Shows notification if a file could not be moved', function(done) {
moveStub.callsFake(function(){
@@ -968,8 +948,7 @@ describe('OCA.Files.FileList tests', function() {
expect(fileList.findFileEl('One.txt').length).toEqual(1);
expect(notificationStub.calledOnce).toEqual(true);
expect(notificationStub.getCall(0).args[0]).toEqual('Could not move "One.txt"');
done();
});
}).then(done, done);
});
it('Restores thumbnail if a file could not be moved', function(done) {
moveStub.callsFake(function(){
@@ -986,8 +965,7 @@ describe('OCA.Files.FileList tests', function() {
expect(notificationStub.getCall(0).args[0]).toEqual('Could not move "One.txt"');
expect(OC.TestUtil.getImageUrl(fileList.findFileEl('One.txt').find('.thumbnail')))
.toEqual(OC.imagePath('core', 'filetypes/text.svg'));
done();
});
}).then(done, done);
});
});

@@ -1026,8 +1004,7 @@ describe('OCA.Files.FileList tests', function() {

// Copying sents a notification to tell that we've successfully copied file
expect(notificationStub.notCalled).toEqual(false);
done();
});
}).then(done, done);
});
it('Copies list of files to target folder', function(done) {
var deferredCopy1 = $.Deferred();
@@ -1061,8 +1038,7 @@ describe('OCA.Files.FileList tests', function() {
expect(fileList.findFileEl('somedir').find('.filesize').text()).toEqual('12 KB');

expect(notificationStub.notCalled).toEqual(false);
done();
});
}).then(done, done);
});
it('Shows notification if a file could not be copied', function(done) {
copyStub.callsFake(function(){
@@ -1076,8 +1052,7 @@ describe('OCA.Files.FileList tests', function() {
expect(fileList.findFileEl('One.txt').length).toEqual(1);
expect(notificationStub.calledOnce).toEqual(true);
expect(notificationStub.getCall(0).args[0]).toEqual('Could not copy "One.txt"');
done();
});
}).then(done, done);
});
it('Restores thumbnail if a file could not be copied', function(done) {
copyStub.callsFake(function(){
@@ -1097,8 +1072,7 @@ describe('OCA.Files.FileList tests', function() {

expect(OC.TestUtil.getImageUrl(fileList.findFileEl('One.txt').find('.thumbnail')))
.toEqual(OC.imagePath('core', 'filetypes/text.svg'));
done();
});
}).then(done, done);
});
});

@@ -1677,13 +1651,15 @@ describe('OCA.Files.FileList tests', function() {
afterEach(function() {
getFolderContentsStub.restore();
});
it('fetches file list from server and renders it when reload() is called', function() {
fileList.reload();
it('fetches file list from server and renders it when reload() is called', function(done) {
var reloading = fileList.reload();
expect(getFolderContentsStub.calledOnce).toEqual(true);
expect(getFolderContentsStub.calledWith('/subdir')).toEqual(true);
deferredList.resolve(200, [testRoot].concat(testFiles));
expect($('#fileList tr').length).toEqual(4);
expect(fileList.findFileEl('One.txt').length).toEqual(1);
return reloading.then(function() {
expect($('#fileList tr').length).toEqual(4);
expect(fileList.findFileEl('One.txt').length).toEqual(1);
}).then(done, done);
});
it('switches dir and fetches file list when calling changeDirectory()', function() {
fileList.changeDirectory('/anothersubdir');
@@ -1724,59 +1700,91 @@ describe('OCA.Files.FileList tests', function() {
expect(fileList.getCurrentDirectory()).toEqual(path);
});
});
it('switches to root dir when current directory does not exist', function() {
fileList.changeDirectory('/unexist');
it('switches to root dir when current directory does not exist', function(done) {
var changing = fileList.changeDirectory('/unexist');

deferredList.reject(404);
expect(fileList.getCurrentDirectory()).toEqual('/');

return changing.then(function() {
expect(fileList.getCurrentDirectory()).toEqual('/');
}).then(done, done);
});
it('switches to root dir when current directory returns 400', function() {
fileList.changeDirectory('/unexist');
it('switches to root dir when current directory returns 400', function(done) {
var changing = fileList.changeDirectory('/unexist');

deferredList.reject(400);
expect(fileList.getCurrentDirectory()).toEqual('/');

return changing.then(function() {
expect(fileList.getCurrentDirectory()).toEqual('/');
}).then(done, done);
});
it('switches to root dir when current directory returns 405', function() {
fileList.changeDirectory('/unexist');
it('switches to root dir when current directory returns 405', function(done) {
var changing = fileList.changeDirectory('/unexist');

deferredList.reject(405);
expect(fileList.getCurrentDirectory()).toEqual('/');

return changing.then(function() {
expect(fileList.getCurrentDirectory()).toEqual('/');
}).then(done, done);
});
it('switches to root dir when current directory is forbidden', function() {
fileList.changeDirectory('/unexist');
it('switches to root dir when current directory is forbidden', function(done) {
var changing = fileList.changeDirectory('/unexist');

deferredList.reject(403);
expect(fileList.getCurrentDirectory()).toEqual('/');

return changing.then(function() {
expect(fileList.getCurrentDirectory()).toEqual('/');
}).then(done, done);
});
it('switches to root dir when current directory is unavailable', function() {
fileList.changeDirectory('/unexist');
it('switches to root dir when current directory is unavailable', function(done) {
var changing = fileList.changeDirectory('/unexist');

deferredList.reject(500);
expect(fileList.getCurrentDirectory()).toEqual('/');

return changing.then(function() {
expect(fileList.getCurrentDirectory()).toEqual('/');
}).then(done, done);
});
it('shows mask before loading file list then hides it at the end', function() {
it('shows mask before loading file list then hides it at the end', function(done) {
var showMaskStub = sinon.stub(fileList, 'showMask');
var hideMaskStub = sinon.stub(fileList, 'hideMask');
fileList.changeDirectory('/anothersubdir');

var changing = fileList.changeDirectory('/anothersubdir');
expect(showMaskStub.calledOnce).toEqual(true);
expect(hideMaskStub.calledOnce).toEqual(false);
deferredList.resolve(200, [testRoot].concat(testFiles));
expect(showMaskStub.calledOnce).toEqual(true);
expect(hideMaskStub.calledOnce).toEqual(true);
showMaskStub.restore();
hideMaskStub.restore();

return changing.then(function() {
expect(showMaskStub.calledOnce).toEqual(true);
expect(hideMaskStub.calledOnce).toEqual(true);
showMaskStub.restore();
hideMaskStub.restore();
}).then(done, done);
});
it('triggers "changeDirectory" event when changing directory', function() {
it('triggers "changeDirectory" event when changing directory', function(done) {
var handler = sinon.stub();
$('#app-content-files').on('changeDirectory', handler);
fileList.changeDirectory('/somedir');
var changing = fileList.changeDirectory('/somedir');

deferredList.resolve(200, [testRoot].concat(testFiles));
expect(handler.calledOnce).toEqual(true);
expect(handler.getCall(0).args[0].dir).toEqual('/somedir');

return changing.then(function() {
expect(handler.calledOnce).toEqual(true);
expect(handler.getCall(0).args[0].dir).toEqual('/somedir');
}).then(done, done);
});
it('triggers "afterChangeDirectory" event with fileid after changing directory', function() {
it('triggers "afterChangeDirectory" event with fileid after changing directory', function(done) {
var handler = sinon.stub();
$('#app-content-files').on('afterChangeDirectory', handler);
fileList.changeDirectory('/somedir');
var changing = fileList.changeDirectory('/somedir');

deferredList.resolve(200, [testRoot].concat(testFiles));
expect(handler.calledOnce).toEqual(true);
expect(handler.getCall(0).args[0].dir).toEqual('/somedir');
expect(handler.getCall(0).args[0].fileId).toEqual(99);

return changing.then(function() {
expect(handler.calledOnce).toEqual(true);
expect(handler.getCall(0).args[0].dir).toEqual('/somedir');
expect(handler.getCall(0).args[0].fileId).toEqual(99);
}).then(done, done);
});
it('changes the directory when receiving "urlChanged" event', function() {
$('#app-content-files').trigger(new $.Event('urlChanged', {view: 'files', dir: '/somedir'}));
@@ -1843,10 +1851,9 @@ describe('OCA.Files.FileList tests', function() {
expect(changeDirStub.getCall(0).args[0]).toEqual('/subdir/two/three with space');
changeDirStub.restore();
});
it('dropping files on breadcrumb calls move operation', function(done) {
it('dropping files on breadcrumb calls move operation', function() {
var testDir = '/subdir/two/three with space/four/five';
var moveStub = sinon.stub(filesClient, 'move');
var resolve1, resolve2;
var deferredMove1 = $.Deferred();
var deferredMove2 = $.Deferred();
moveStub.onCall(0).returns(deferredMove1.promise());
@@ -1873,7 +1880,6 @@ describe('OCA.Files.FileList tests', function() {
expect(moveStub.getCall(1).args[0]).toEqual(testDir + '/Two.jpg');
expect(moveStub.getCall(1).args[1]).toEqual('/subdir/two/three with space/Two.jpg');
moveStub.restore();
done();
});
deferredMove1.resolve(201);
deferredMove2.resolve(201);
@@ -2362,7 +2368,6 @@ describe('OCA.Files.FileList tests', function() {
$('.selectedActions .filesSelectMenu .delete').click();
deferredDelete.resolve(204);
return deferred.promise();

});
it('Deletes all files when all selected when "Delete" clicked', function(done) {
var deferred = $.Deferred();
@@ -2811,8 +2816,8 @@ describe('OCA.Files.FileList tests', function() {
getFileInfoStub.restore();
});

it('creates file with given name and adds it to the list', function() {
fileList.createFile('test.txt');
it('creates file with given name and adds it to the list', function(done) {
var creating = fileList.createFile('test.txt');

expect(createStub.calledOnce).toEqual(true);
expect(createStub.getCall(0).args[0]).toEqual('/subdir/test.txt');
@@ -2835,9 +2840,11 @@ describe('OCA.Files.FileList tests', function() {
})
);

var $tr = fileList.findFileEl('test.txt');
expect($tr.length).toEqual(1);
expect($tr.attr('data-mime')).toEqual('text/plain');
return creating.then(function() {
var $tr = fileList.findFileEl('test.txt');
expect($tr.length).toEqual(1);
expect($tr.attr('data-mime')).toEqual('text/plain');
}).then(done, done);
});
// TODO: error cases
// TODO: unique name cases
@@ -2861,8 +2868,8 @@ describe('OCA.Files.FileList tests', function() {
getFileInfoStub.restore();
});

it('creates folder with given name and adds it to the list', function() {
fileList.createDirectory('sub dir');
it('creates folder with given name and adds it to the list', function(done) {
var creating = fileList.createDirectory('sub dir');

expect(createStub.calledOnce).toEqual(true);
expect(createStub.getCall(0).args[0]).toEqual('/subdir/sub dir');
@@ -2881,9 +2888,11 @@ describe('OCA.Files.FileList tests', function() {
})
);

var $tr = fileList.findFileEl('sub dir');
expect($tr.length).toEqual(1);
expect($tr.attr('data-mime')).toEqual('httpd/unix-directory');
return creating.then(function() {
var $tr = fileList.findFileEl('sub dir');
expect($tr.length).toEqual(1);
expect($tr.attr('data-mime')).toEqual('httpd/unix-directory');
}).then(done, done);
});
// TODO: error cases
// TODO: unique name cases
@@ -2906,21 +2915,27 @@ describe('OCA.Files.FileList tests', function() {

expect(promise.state()).toEqual('resolved');
});
it('fetches info when folder is the current one', function() {
it('fetches info when folder is the current one', function(done) {
fileList.addAndFetchFileInfo('testfile.txt', '/subdir');
expect(getFileInfoStub.calledOnce).toEqual(true);
expect(getFileInfoStub.getCall(0).args[0]).toEqual('/subdir/testfile.txt');

return Promise.resolve().then(function() {
expect(getFileInfoStub.calledOnce).toEqual(true);
expect(getFileInfoStub.getCall(0).args[0]).toEqual('/subdir/testfile.txt');
}).then(done, done);
});
it('adds file data to list when fetching is done', function() {
fileList.addAndFetchFileInfo('testfile.txt', '/subdir');
it('adds file data to list when fetching is done', function(done) {
var adding = fileList.addAndFetchFileInfo('testfile.txt', '/subdir');
getFileInfoDeferred.resolve(200, {
name: 'testfile.txt',
size: 100
});
expect(fileList.findFileEl('testfile.txt').attr('data-size')).toEqual('100');

return adding.then(function() {
expect(fileList.findFileEl('testfile.txt').attr('data-size')).toEqual('100');
}).then(done, done);
});
it('replaces file data to list when fetching is done', function() {
fileList.addAndFetchFileInfo('testfile.txt', '/subdir', {replace: true});
it('replaces file data to list when fetching is done', function(done) {
var adding = fileList.addAndFetchFileInfo('testfile.txt', '/subdir', {replace: true});
fileList.add({
name: 'testfile.txt',
size: 95
@@ -2929,20 +2944,24 @@ describe('OCA.Files.FileList tests', function() {
name: 'testfile.txt',
size: 100
});
expect(fileList.findFileEl('testfile.txt').attr('data-size')).toEqual('100');
expect(fileList.findFileEl('testfile.txt').attr('data-size')).toEqual('95');
return adding.then(function() {
expect(fileList.findFileEl('testfile.txt').attr('data-size')).toEqual('100');
}).then(done, done);
});
it('resolves promise with file data when fetching is done', function() {
it('resolves promise with file data when fetching is done', function(done) {
var promise = fileList.addAndFetchFileInfo('testfile.txt', '/subdir', {replace: true});
getFileInfoDeferred.resolve(200, {
name: 'testfile.txt',
size: 100
});
expect(promise.state()).toEqual('resolved');
promise.then(function(status, data) {
expect(promise.state()).toEqual('pending');
return promise.then(function(status, data) {
expect(promise.state()).toEqual('resolved');
expect(status).toEqual(200);
expect(data.name).toEqual('testfile.txt');
expect(data.size).toEqual(100);
});
}).then(done, done);
});
});
/**
@@ -3018,17 +3037,16 @@ describe('OCA.Files.FileList tests', function() {
uploader.trigger('drop', eventData, data || {});
return !!data.targetDir;
}
it('drop on a tr or crumb outside file list does not trigger upload', function() {
var $anotherTable = $('<table><tbody><tr><td>outside<div class="crumb">crumb</div></td></tr></table>');
var ev;
$('#testArea').append($anotherTable);
ev = dropOn($anotherTable.find('tr'), uploadData);
expect(ev).toEqual(false);

it('drop on a tr or crumb outside file list does not trigger upload', function() {
var $anotherTable = $('<table><tbody><tr><td>outside<div class="crumb">crumb</div></td></tr></table>');
var ev;
$('#testArea').append($anotherTable);
ev = dropOn($anotherTable.find('tr'), uploadData);
expect(ev).toEqual(false);

ev = dropOn($anotherTable.find('.crumb'), uploadData);
expect(ev).toEqual(false);
});
ev = dropOn($anotherTable.find('.crumb'), uploadData);
expect(ev).toEqual(false);
});
it('drop on an element outside file list container does not trigger upload', function() {
var $anotherEl = $('<div>outside</div>');
var ev;
@@ -3167,7 +3185,7 @@ describe('OCA.Files.FileList tests', function() {
expect(fetchInfoStub.getCall(0).args[0]).toEqual('upload.txt');
expect(fetchInfoStub.getCall(0).args[1]).toEqual('/subdir');
});
it('highlights all uploaded files after all fetches are done', function() {
it('highlights all uploaded files after all fetches are done', function(done) {
var highlightStub = sinon.stub(fileList, 'highlightFiles');
var def1 = addFile(createUpload('upload.txt', '/subdir'));
var def2 = addFile(createUpload('upload2.txt', '/subdir'));
@@ -3179,12 +3197,16 @@ describe('OCA.Files.FileList tests', function() {
expect(highlightStub.notCalled).toEqual(true);
def2.resolve();
def3.resolve();
expect(highlightStub.calledOnce).toEqual(true);
expect(highlightStub.getCall(0).args[0]).toEqual(['upload.txt', 'upload2.txt']);
setTimeout(function() {
expect(highlightStub.callCount).toEqual(1);
expect(highlightStub.getCall(0).args[0]).toEqual(['upload.txt', 'upload2.txt']);

highlightStub.restore();

highlightStub.restore();
done();
}, 5);
});
it('queries storage stats after all fetches are done', function() {
it('queries storage stats after all fetches are done', function(done) {
var statStub = sinon.stub(fileList, 'updateStorageStatistics');
var highlightStub = sinon.stub(fileList, 'highlightFiles');
var def1 = addFile(createUpload('upload.txt', '/subdir'));
@@ -3197,15 +3219,20 @@ describe('OCA.Files.FileList tests', function() {
expect(statStub.notCalled).toEqual(true);
def2.resolve();
def3.resolve();
expect(statStub.calledOnce).toEqual(true);
setTimeout(function() {
expect(statStub.calledOnce).toEqual(true);

highlightStub.restore();
highlightStub.restore();

done();
}, 3);
});
});
});
describe('Handling errors', function () {
var deferredList;
var getFolderContentsStub;
var reloading;

beforeEach(function() {
deferredList = $.Deferred();
@@ -3213,33 +3240,39 @@ describe('OCA.Files.FileList tests', function() {
sinon.stub(filesClient, 'getFolderContents');
getFolderContentsStub.onCall(0).returns(deferredList.promise());
getFolderContentsStub.onCall(1).returns($.Deferred().promise());
fileList.reload();
reloading = fileList.reload();
});
afterEach(function() {
getFolderContentsStub.restore();
fileList = undefined;
});
it('redirects to root folder in case of forbidden access', function () {
it('redirects to root folder in case of forbidden access', function (done) {
deferredList.reject(403);

expect(fileList.getCurrentDirectory()).toEqual('/');
expect(getFolderContentsStub.calledTwice).toEqual(true);
return reloading.then(function() {
expect(fileList.getCurrentDirectory()).toEqual('/');
expect(getFolderContentsStub.calledTwice).toEqual(true);
}).then(done, done);
});
it('redirects to root folder and shows notification in case of internal server error', function () {
it('redirects to root folder and shows notification in case of internal server error', function (done) {
expect(notificationStub.notCalled).toEqual(true);
deferredList.reject(500);

expect(fileList.getCurrentDirectory()).toEqual('/');
expect(getFolderContentsStub.calledTwice).toEqual(true);
expect(notificationStub.calledOnce).toEqual(true);
return reloading.then(function() {
expect(fileList.getCurrentDirectory()).toEqual('/');
expect(getFolderContentsStub.calledTwice).toEqual(true);
expect(notificationStub.calledOnce).toEqual(true);
}).then(done, done);
});
it('redirects to root folder and shows notification in case of storage not available', function () {
it('redirects to root folder and shows notification in case of storage not available', function (done) {
expect(notificationStub.notCalled).toEqual(true);
deferredList.reject(503, 'Storage is temporarily not available');

expect(fileList.getCurrentDirectory()).toEqual('/');
expect(getFolderContentsStub.calledTwice).toEqual(true);
expect(notificationStub.calledOnce).toEqual(true);
return reloading.then(function() {
expect(fileList.getCurrentDirectory()).toEqual('/');
expect(getFolderContentsStub.calledTwice).toEqual(true);
expect(notificationStub.calledOnce).toEqual(true);
}).then(done, done);
});
});
describe('showFileBusyState', function() {
@@ -3255,7 +3288,6 @@ describe('OCA.Files.FileList tests', function() {
expect($tr.find('.thumbnail').parent().attr('class'))
.toContain('icon-loading-small');


fileList.showFileBusyState('Two.jpg', false);
expect($tr.hasClass('busy')).toEqual(false);
expect(OC.TestUtil.getImageUrl($tr.find('.thumbnail')))

+ 42
- 33
apps/files/tests/js/tagspluginspec.js Ver arquivo

@@ -73,7 +73,7 @@ describe('OCA.Files.TagsPlugin tests', function() {
});
});
describe('Applying tags', function() {
it('through FileActionsMenu sends request to server and updates icon', function() {
it('through FileActionsMenu sends request to server and updates icon', function(done) {
var request;
fileList.setFiles(testFiles);
var $tr = fileList.findFileEl('One.txt');
@@ -92,42 +92,51 @@ describe('OCA.Files.TagsPlugin tests', function() {
tags: ['tag1', 'tag2', 'tag3', OC.TAG_FAVORITE]
}));

// re-read the element as it was re-inserted
$tr = fileList.findFileEl('One.txt');
$favoriteMark = $tr.find('.favorite-mark');
$showMenuAction = $tr.find('.action-menu');
setTimeout(function () {
// re-read the element as it was re-inserted
$tr = fileList.findFileEl('One.txt');
$favoriteMark = $tr.find('.favorite-mark');
$showMenuAction = $tr.find('.action-menu');

expect($tr.attr('data-favorite')).toEqual('true');
expect($tr.attr('data-tags').split('|')).toEqual(['tag1', 'tag2', 'tag3', OC.TAG_FAVORITE]);
expect(fileList.files[0].tags).toEqual(['tag1', 'tag2', 'tag3', OC.TAG_FAVORITE]);
expect($favoriteMark.find('.icon').hasClass('icon-star')).toEqual(false);
expect($favoriteMark.find('.icon').hasClass('icon-starred')).toEqual(true);

// show again the menu and get the new action, as the menu was
// closed and removed (and with it, the previous action) when that
// action was clicked
$showMenuAction.click();
$favoriteActionInMenu = $tr.find('.fileActionsMenu .action-favorite');
$favoriteActionInMenu.click();
expect($tr.attr('data-favorite')).toEqual('true');
expect($tr.attr('data-tags').split('|')).toEqual(['tag1', 'tag2', 'tag3', OC.TAG_FAVORITE]);
expect(fileList.files[0].tags).toEqual(['tag1', 'tag2', 'tag3', OC.TAG_FAVORITE]);
expect($favoriteMark.find('.icon').hasClass('icon-star')).toEqual(false);
expect($favoriteMark.find('.icon').hasClass('icon-starred')).toEqual(true);

expect(fakeServer.requests.length).toEqual(2);
request = fakeServer.requests[1];
expect(JSON.parse(request.requestBody)).toEqual({
tags: ['tag1', 'tag2', 'tag3']
});
request.respond(200, {'Content-Type': 'application/json'}, JSON.stringify({
tags: ['tag1', 'tag2', 'tag3']
}));
// show again the menu and get the new action, as the menu was
// closed and removed (and with it, the previous action) when that
// action was clicked
$showMenuAction.click();
$favoriteActionInMenu = $tr.find('.fileActionsMenu .action-favorite');
$favoriteActionInMenu.click();

// re-read the element as it was re-inserted
$tr = fileList.findFileEl('One.txt');
$favoriteMark = $tr.find('.favorite-mark');
setTimeout(function() {
expect(fakeServer.requests.length).toEqual(2);
request = fakeServer.requests[1];
expect(JSON.parse(request.requestBody)).toEqual({
tags: ['tag1', 'tag2', 'tag3']
});

request.respond(200, {'Content-Type': 'application/json'}, JSON.stringify({
tags: ['tag1', 'tag2', 'tag3']
}));

setTimeout(function() {
// re-read the element as it was re-inserted
$tr = fileList.findFileEl('One.txt');
$favoriteMark = $tr.find('.favorite-mark');

expect($tr.attr('data-favorite')).toBeFalsy();
expect($tr.attr('data-tags').split('|')).toEqual(['tag1', 'tag2', 'tag3']);
expect(fileList.files[0].tags).toEqual(['tag1', 'tag2', 'tag3']);
expect($favoriteMark.find('.icon').hasClass('icon-star')).toEqual(true);
expect($favoriteMark.find('.icon').hasClass('icon-starred')).toEqual(false);

expect($tr.attr('data-favorite')).toBeFalsy();
expect($tr.attr('data-tags').split('|')).toEqual(['tag1', 'tag2', 'tag3']);
expect(fileList.files[0].tags).toEqual(['tag1', 'tag2', 'tag3']);
expect($favoriteMark.find('.icon').hasClass('icon-star')).toEqual(true);
expect($favoriteMark.find('.icon').hasClass('icon-starred')).toEqual(false);
done();
}, 1);
}, 1);
}, 1);
});
});
describe('elementToFile', function() {

+ 37
- 35
apps/files_external/tests/js/mountsfilelistSpec.js Ver arquivo

@@ -60,13 +60,14 @@ describe('OCA.Files_External.FileList tests', function() {

describe('loading file list for external storages', function() {
var ocsResponse;
var reloading;

beforeEach(function() {
fileList = new OCA.Files_External.FileList(
$('#app-content-container')
);

fileList.reload();
reloading = fileList.reload();

/* jshint camelcase: false */
ocsResponse = {
@@ -94,7 +95,7 @@ describe('OCA.Files_External.FileList tests', function() {
}
};
});
it('render storage list', function() {
it('render storage list', function(done) {
var request;
var $rows;
var $tr;
@@ -112,41 +113,42 @@ describe('OCA.Files_External.FileList tests', function() {
JSON.stringify(ocsResponse)
);

$rows = fileList.$el.find('tbody tr');
expect($rows.length).toEqual(2);
return reloading.then(function() {
$rows = fileList.$el.find('tbody tr');
expect($rows.length).toEqual(2);

$tr = $rows.eq(0);
expect($tr.attr('data-id')).not.toBeDefined();
expect($tr.attr('data-type')).toEqual('dir');
expect($tr.attr('data-file')).toEqual('sftp mount');
expect($tr.attr('data-path')).toEqual('/another mount points');
expect($tr.attr('data-size')).not.toBeDefined();
expect($tr.attr('data-permissions')).toEqual('1'); // read only
expect($tr.find('a.name').attr('href')).toEqual(
OC.getRootPath() +
'/index.php/apps/files' +
'?dir=/another%20mount%20points/sftp%20mount'
);
expect($tr.find('.nametext').text().trim()).toEqual('sftp mount');
expect($tr.find('.column-scope > span').text().trim()).toEqual('System');
expect($tr.find('.column-backend').text().trim()).toEqual('SFTP');

$tr = $rows.eq(1);
expect($tr.attr('data-id')).not.toBeDefined();
expect($tr.attr('data-type')).toEqual('dir');
expect($tr.attr('data-file')).toEqual('smb mount');
expect($tr.attr('data-path')).toEqual('/mount points');
expect($tr.attr('data-size')).not.toBeDefined();
expect($tr.attr('data-permissions')).toEqual('9'); // read and delete
expect($tr.find('a.name').attr('href')).toEqual(
OC.getRootPath() +
'/index.php/apps/files' +
'?dir=/mount%20points/smb%20mount'
);
expect($tr.find('.nametext').text().trim()).toEqual('smb mount');
expect($tr.find('.column-scope > span').text().trim()).toEqual('Personal');
expect($tr.find('.column-backend').text().trim()).toEqual('SMB');
$tr = $rows.eq(0);
expect($tr.attr('data-id')).not.toBeDefined();
expect($tr.attr('data-type')).toEqual('dir');
expect($tr.attr('data-file')).toEqual('sftp mount');
expect($tr.attr('data-path')).toEqual('/another mount points');
expect($tr.attr('data-size')).not.toBeDefined();
expect($tr.attr('data-permissions')).toEqual('1'); // read only
expect($tr.find('a.name').attr('href')).toEqual(
OC.getRootPath() +
'/index.php/apps/files' +
'?dir=/another%20mount%20points/sftp%20mount'
);
expect($tr.find('.nametext').text().trim()).toEqual('sftp mount');
expect($tr.find('.column-scope > span').text().trim()).toEqual('System');
expect($tr.find('.column-backend').text().trim()).toEqual('SFTP');

$tr = $rows.eq(1);
expect($tr.attr('data-id')).not.toBeDefined();
expect($tr.attr('data-type')).toEqual('dir');
expect($tr.attr('data-file')).toEqual('smb mount');
expect($tr.attr('data-path')).toEqual('/mount points');
expect($tr.attr('data-size')).not.toBeDefined();
expect($tr.attr('data-permissions')).toEqual('9'); // read and delete
expect($tr.find('a.name').attr('href')).toEqual(
OC.getRootPath() +
'/index.php/apps/files' +
'?dir=/mount%20points/smb%20mount'
);
expect($tr.find('.nametext').text().trim()).toEqual('smb mount');
expect($tr.find('.column-scope > span').text().trim()).toEqual('Personal');
expect($tr.find('.column-backend').text().trim()).toEqual('SMB');
}).then(done, done);
});
});
});

+ 8
- 8
apps/files_trashbin/tests/js/filelistSpec.js Ver arquivo

@@ -316,7 +316,7 @@ describe('OCA.Trashbin.FileList tests', function () {
expect($('.selectedActions .item-delete').is(':visible')).toEqual(false);
expect($('.selectedActions .item-restore').is(':visible')).toEqual(false);
});
it('Deletes selected files when "Delete" clicked', function () {
it('Deletes selected files when "Delete" clicked', function (done) {
var request;
var promise = fileList._onClickDeleteSelected({
preventDefault: function () {
@@ -334,9 +334,9 @@ describe('OCA.Trashbin.FileList tests', function () {
expect(fileList.findFileEl('Three.pdf.d33333').length).toEqual(0);
expect(fileList.findFileEl('somedir.d99999').length).toEqual(0);
expect(fileList.findFileEl('Two.jpg.d22222').length).toEqual(1);
});
}).then(done, done);
});
it('Deletes all files when all selected when "Delete" clicked', function () {
it('Deletes all files when all selected when "Delete" clicked', function (done) {
var request;
$('.select-all').click();
var promise = fileList._onClickDeleteSelected({
@@ -349,11 +349,11 @@ describe('OCA.Trashbin.FileList tests', function () {
request.respond(200);
return promise.then(function () {
expect(fileList.isEmpty).toEqual(true);
});
}).then(done, done);
});
});
describe('Restore', function () {
it('Restores selected files when "Restore" clicked', function () {
it('Restores selected files when "Restore" clicked', function (done) {
var request;
var promise = fileList._onClickRestoreSelected({
preventDefault: function () {
@@ -372,9 +372,9 @@ describe('OCA.Trashbin.FileList tests', function () {
expect(fileList.findFileEl('Three.pdf.d33333').length).toEqual(0);
expect(fileList.findFileEl('somedir.d99999').length).toEqual(0);
expect(fileList.findFileEl('Two.jpg.d22222').length).toEqual(1);
});
}).then(done, done);
});
it('Restores all files when all selected when "Restore" clicked', function () {
it('Restores all files when all selected when "Restore" clicked', function (done) {
var request;
$('.select-all').click();
var promise = fileList._onClickRestoreSelected({
@@ -391,7 +391,7 @@ describe('OCA.Trashbin.FileList tests', function () {
}
return promise.then(function() {
expect(fileList.isEmpty).toEqual(true);
});
}).then(done, done);
});
});
});

+ 8
- 6
apps/systemtags/tests/js/systemtagsfilelistSpec.js Ver arquivo

@@ -149,10 +149,10 @@ describe('OCA.SystemTags.FileList tests', function() {
getFilteredFilesSpec = sinon.stub(OC.Files.Client.prototype, 'getFilteredFiles')
.returns(requestDeferred.promise());
});
afterEach(function() {
afterEach(function() {
getFilteredFilesSpec.restore();
});
it('renders empty message when no tags were set', function() {
fileList = new OCA.SystemTags.FileList(
$('#app-content-container'), {
@@ -167,14 +167,14 @@ describe('OCA.SystemTags.FileList tests', function() {
expect(getFilteredFilesSpec.notCalled).toEqual(true);
});

it('render files', function() {
it('render files', function(done) {
fileList = new OCA.SystemTags.FileList(
$('#app-content-container'), {
systemTagIds: ['123', '456']
}
);

fileList.reload();
var reloading = fileList.reload();

expect(getFilteredFilesSpec.calledOnce).toEqual(true);
expect(getFilteredFilesSpec.lastCall.args[0].systemTagIds).toEqual(['123', '456']);
@@ -219,8 +219,10 @@ describe('OCA.SystemTags.FileList tests', function() {

requestDeferred.resolve(207, testFiles);

expect(fileList.$el.find('#emptycontent').hasClass('hidden')).toEqual(true);
expect(fileList.$el.find('tbody>tr').length).toEqual(4);
return reloading.then(function() {
expect(fileList.$el.find('#emptycontent').hasClass('hidden')).toEqual(true);
expect(fileList.$el.find('tbody>tr').length).toEqual(4);
}).then(done, done);
});
});
});

+ 0
- 1
apps/systemtags/tests/js/systemtagsinfoviewSpec.js Ver arquivo

@@ -243,7 +243,6 @@ describe('OCA.SystemTags.SystemTagsInfoView tests', function() {
view.openDropdown();

expect(select2Stub.calledOnce).toBeTruthy();
expect(select2Stub.thisValues[0].selector).toEqual('.systemTagsInputField');
expect(select2Stub.withArgs('open')).toBeTruthy();
});
});

+ 1
- 1
core/js/dist/files_client.js
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 1
- 1
core/js/dist/files_client.js.map
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 1
- 1
core/js/dist/install.js
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 1
- 1
core/js/dist/install.js.map
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 1
- 1
core/js/dist/login.js
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 1
- 1
core/js/dist/login.js.map
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 1
- 1
core/js/dist/main.js
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 1
- 1
core/js/dist/main.js.map
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 2
- 2
core/js/tests/specs/contactsmenuSpec.js Ver arquivo

@@ -243,13 +243,13 @@ describe('Contacts menu', function() {

// Open the first one
$menuEl.find('.contact').eq(0).find('.other-actions').click();
expect($menuEl.find('.contact').eq(0).find('.menu').css('display')).toBe('block');
expect($menuEl.find('.contact').eq(0).find('.menu').css('display')).toBe('');
expect($menuEl.find('.contact').eq(1).find('.menu').css('display')).toBe('none');

// Open the second one
$menuEl.find('.contact').eq(1).find('.other-actions').click();
expect($menuEl.find('.contact').eq(0).find('.menu').css('display')).toBe('none');
expect($menuEl.find('.contact').eq(1).find('.menu').css('display')).toBe('block');
expect($menuEl.find('.contact').eq(1).find('.menu').css('display')).toBe('');

// Close the second one
$menuEl.find('.contact').eq(1).find('.other-actions').click();

+ 42
- 20
core/js/tests/specs/jquery.contactsmenuSpec.js Ver arquivo

@@ -22,7 +22,9 @@ describe('jquery.contactsMenu tests', function() {
});

afterEach(function() {
$selector1.off();
$selector1.remove();
$selector2.off();
$selector2.remove();
$appendTo.remove();
});
@@ -100,10 +102,12 @@ describe('jquery.contactsMenu tests', function() {
});

describe('send requests to the server and render', function() {
it('load a topaction only', function() {
it('load a topaction only', function(done) {
$('#selector1, #selector2').contactsMenu('user', 0, $appendTo);
$selector1.click();

expect(fakeServer.requests[0].method).toEqual('POST');
expect(fakeServer.requests[0].url).toEqual('http://localhost/index.php/contactsmenu/findOne');
fakeServer.requests[0].respond(
200,
{ 'Content-Type': 'application/json; charset=utf-8' },
@@ -117,13 +121,15 @@ describe('jquery.contactsMenu tests', function() {
"actions": []
})
);
expect(fakeServer.requests[0].method).toEqual('POST');
expect(fakeServer.requests[0].url).toEqual('http://localhost/index.php/contactsmenu/findOne');

expect($appendTo.html().replace(/[\r\n\t]?(\ \ +)?/g, '')).toEqual('<div class="menu popovermenu menu-left contactsmenu-popover loaded" style="display: block;"><ul><li class="hidden"><a><span class="icon-loading-small"></span></a></li><li><a href="mailto:bar%40baz.wtf"><img src="foo.svg"><span>bar@baz.wtf</span></a></li></ul></div>');
$selector1.on('load', function() {
expect($appendTo.html().replace(/[\r\n\t]?(\ \ +)?/g, '')).toEqual('<div class="menu popovermenu menu-left contactsmenu-popover loaded" style="display: block;"><ul><li class="hidden"><a><span class="icon-loading-small"></span></a></li><li><a href="mailto:bar%40baz.wtf"><img src="foo.svg"><span>bar@baz.wtf</span></a></li></ul></div>');

done();
});
});

it('load topaction and more actions', function() {
it('load topaction and more actions', function(done) {
$('#selector1, #selector2').contactsMenu('user', 0, $appendTo);
$selector1.click();

@@ -147,10 +153,14 @@ describe('jquery.contactsMenu tests', function() {
expect(fakeServer.requests[0].method).toEqual('POST');
expect(fakeServer.requests[0].url).toEqual('http://localhost/index.php/contactsmenu/findOne');

expect($appendTo.html().replace(/[\r\n\t]?(\ \ +)?/g, '')).toEqual('<div class="menu popovermenu menu-left contactsmenu-popover loaded" style="display: block;"><ul><li class="hidden"><a><span class="icon-loading-small"></span></a></li><li><a href="mailto:bar%40baz.wtf"><img src="foo.svg"><span>bar@baz.wtf</span></a></li><li><a href="http://localhost/index.php/apps/contacts"><img src="details.svg"><span>Details</span></a></li></ul></div>');
$selector1.on('load', function() {
expect($appendTo.html().replace(/[\r\n\t]?(\ \ +)?/g, '')).toEqual('<div class="menu popovermenu menu-left contactsmenu-popover loaded" style="display: block;"><ul><li class="hidden"><a><span class="icon-loading-small"></span></a></li><li><a href="mailto:bar%40baz.wtf"><img src="foo.svg"><span>bar@baz.wtf</span></a></li><li><a href="http://localhost/index.php/apps/contacts"><img src="details.svg"><span>Details</span></a></li></ul></div>');

done();
});
});

it('load no actions', function() {
it('load no actions', function(done) {
$('#selector1, #selector2').contactsMenu('user', 0, $appendTo);
$selector1.click();

@@ -167,10 +177,14 @@ describe('jquery.contactsMenu tests', function() {
expect(fakeServer.requests[0].method).toEqual('POST');
expect(fakeServer.requests[0].url).toEqual('http://localhost/index.php/contactsmenu/findOne');

expect($appendTo.html().replace(/[\r\n\t]?(\ \ +)?/g, '')).toEqual('<div class="menu popovermenu menu-left contactsmenu-popover loaded" style="display: block;"><ul><li class="hidden"><a><span class="icon-loading-small"></span></a></li><li><a href="#"><span>No action available</span></a></li></ul></div>');
$selector1.on('load', function() {
expect($appendTo.html().replace(/[\r\n\t]?(\ \ +)?/g, '')).toEqual('<div class="menu popovermenu menu-left contactsmenu-popover loaded" style="display: block;"><ul><li class="hidden"><a><span class="icon-loading-small"></span></a></li><li><a href="#"><span>No action available</span></a></li></ul></div>');

done();
});
});

it('should throw an error', function() {
it('should throw an error', function(done) {
$('#selector1, #selector2').contactsMenu('user', 0, $appendTo);
$selector1.click();

@@ -182,10 +196,14 @@ describe('jquery.contactsMenu tests', function() {
expect(fakeServer.requests[0].method).toEqual('POST');
expect(fakeServer.requests[0].url).toEqual('http://localhost/index.php/contactsmenu/findOne');

expect($appendTo.html().replace(/[\r\n\t]?(\ \ +)?/g, '')).toEqual('<div class="menu popovermenu menu-left contactsmenu-popover loaded" style="display: block;"><ul><li class="hidden"><a><span class="icon-loading-small"></span></a></li><li><a href="#"><span>Error fetching contact actions</span></a></li></ul></div>');
$selector1.on('loaderror', function() {
expect($appendTo.html().replace(/[\r\n\t]?(\ \ +)?/g, '')).toEqual('<div class="menu popovermenu menu-left contactsmenu-popover loaded" style="display: block;"><ul><li class="hidden"><a><span class="icon-loading-small"></span></a></li><li><a href="#"><span>Error fetching contact actions</span></a></li></ul></div>');

done();
});
});

it('should handle 404', function() {
it('should handle 404', function(done) {
$('#selector1, #selector2').contactsMenu('user', 0, $appendTo);
$selector1.click();

@@ -197,17 +215,21 @@ describe('jquery.contactsMenu tests', function() {
expect(fakeServer.requests[0].method).toEqual('POST');
expect(fakeServer.requests[0].url).toEqual('http://localhost/index.php/contactsmenu/findOne');

expect($appendTo.html().replace(/[\r\n\t]?(\ \ +)?/g, '')).toEqual('<div class="menu popovermenu menu-left contactsmenu-popover loaded" style="display: block;"><ul><li class="hidden"><a><span class="icon-loading-small"></span></a></li><li><a href="#"><span>No action available</span></a></li></ul></div>');
$selector1.on('loaderror', function() {
expect($appendTo.html().replace(/[\r\n\t]?(\ \ +)?/g, '')).toEqual('<div class="menu popovermenu menu-left contactsmenu-popover loaded" style="display: block;"><ul><li class="hidden"><a><span class="icon-loading-small"></span></a></li><li><a href="#"><span>No action available</span></a></li></ul></div>');

done();
});
});
});

it('click anywhere else to close the menu', function() {
$('#selector1, #selector2').contactsMenu('user', 0, $appendTo);
it('click anywhere else to close the menu', function() {
$('#selector1, #selector2').contactsMenu('user', 0, $appendTo);

expect($appendTo.find('div').hasClass('hidden')).toEqual(true);
$selector1.click();
expect($appendTo.find('div').hasClass('hidden')).toEqual(false);
$(document).click();
expect($appendTo.find('div').hasClass('hidden')).toEqual(true);
expect($appendTo.find('div').hasClass('hidden')).toEqual(true);
$selector1.click();
expect($appendTo.find('div').hasClass('hidden')).toEqual(false);
$(document).click();
expect($appendTo.find('div').hasClass('hidden')).toEqual(true);
});
});
});

+ 35
- 25
core/js/tests/specs/l10nSpec.js Ver arquivo

@@ -110,18 +110,30 @@ describe('OC.L10N tests', function() {
});
});
describe('async loading of translations', function() {
it('loads bundle for given app and calls callback', function() {
it('loads bundle for given app and calls callback', function(done) {
var localeStub = sinon.stub(OC, 'getLocale').returns('zh_CN');
var callbackStub = sinon.stub();
var promiseStub = sinon.stub();
OC.L10N.load(TEST_APP, callbackStub).then(promiseStub);
var loading = OC.L10N.load(TEST_APP, callbackStub);
expect(callbackStub.notCalled).toEqual(true);
expect(promiseStub.notCalled).toEqual(true);
expect(fakeServer.requests.length).toEqual(1);
var req = fakeServer.requests[0];
expect(req.url).toEqual(
OC.getRootPath() + '/apps3/' + TEST_APP + '/l10n/zh_CN.json'
);

loading
.then(promiseStub)
.then(function() {
expect(fakeServer.requests.length).toEqual(1);
expect(req.url).toEqual(
OC.getRootPath() + '/apps3/' + TEST_APP + '/l10n/zh_CN.json'
);

expect(callbackStub.calledOnce).toEqual(true);
expect(promiseStub.calledOnce).toEqual(true);
expect(t(TEST_APP, 'Hello world!')).toEqual('你好世界!');
localeStub.restore();
})
.then(done);

expect(promiseStub.notCalled).toEqual(true);
req.respond(
200,
{ 'Content-Type': 'application/json' },
@@ -130,32 +142,30 @@ describe('OC.L10N tests', function() {
pluralForm: 'nplurals=2; plural=(n != 1);'
})
);

expect(callbackStub.calledOnce).toEqual(true);
expect(promiseStub.calledOnce).toEqual(true);
expect(t(TEST_APP, 'Hello world!')).toEqual('你好世界!');
localeStub.restore();
});
it('calls callback if translation already available', function() {
var promiseStub = sinon.stub();
it('calls callback if translation already available', function(done) {
var callbackStub = sinon.stub();
spyOn(console, 'warn');
OC.L10N.register(TEST_APP, {
'Hello world!': 'Hallo Welt!'
});
OC.L10N.load(TEST_APP, callbackStub).then(promiseStub);
expect(callbackStub.calledOnce).toEqual(true);
expect(promiseStub.calledOnce).toEqual(true);
expect(fakeServer.requests.length).toEqual(0);
OC.L10N.load(TEST_APP, callbackStub)
.then(function() {
expect(callbackStub.calledOnce).toEqual(true);
expect(fakeServer.requests.length).toEqual(0);
})
.then(done);

});
it('calls callback if locale is en', function() {
var localeStub = sinon.stub(OC, 'getLocale').returns('en');
var promiseStub = sinon.stub();
it('calls callback if locale is en', function(done) {
var callbackStub = sinon.stub();
OC.L10N.load(TEST_APP, callbackStub).then(promiseStub);
expect(callbackStub.calledOnce).toEqual(true);
expect(promiseStub.calledOnce).toEqual(true);
expect(fakeServer.requests.length).toEqual(0);
OC.L10N.load(TEST_APP, callbackStub)
.then(function() {
expect(callbackStub.calledOnce).toEqual(true);
expect(fakeServer.requests.length).toEqual(0);
})
.then(done)
.catch(done);
});
});
});

+ 54
- 34
core/js/tests/specs/oc-backbone-webdavSpec.js Ver arquivo

@@ -71,7 +71,7 @@ describe('Backbone Webdav extension', function() {
});
});

it('makes a POST request to create model into collection', function() {
it('makes a POST request to create model into collection', function(done) {
var collection = new TestCollection();
var model = collection.create({
firstName: 'Hello',
@@ -104,10 +104,14 @@ describe('Backbone Webdav extension', function() {
}
});

expect(model.id).toEqual('123');
setTimeout(function() {
expect(model.id).toEqual('123');

done();
}, 0)
});

it('uses PROPFIND to retrieve collection', function() {
it('uses PROPFIND to retrieve collection', function(done) {
var successStub = sinon.stub();
var errorStub = sinon.stub();
var collection = new TestCollection();
@@ -164,23 +168,27 @@ describe('Backbone Webdav extension', function() {
]
});

expect(collection.length).toEqual(2);
setTimeout(function() {
expect(collection.length).toEqual(2);

var model = collection.get('123');
expect(model.id).toEqual('123');
expect(model.get('firstName')).toEqual('Hello');
expect(model.get('lastName')).toEqual('World');
var model = collection.get('123');
expect(model.id).toEqual('123');
expect(model.get('firstName')).toEqual('Hello');
expect(model.get('lastName')).toEqual('World');

model = collection.get('456');
expect(model.id).toEqual('456');
expect(model.get('firstName')).toEqual('Test');
expect(model.get('lastName')).toEqual('Person');

model = collection.get('456');
expect(model.id).toEqual('456');
expect(model.get('firstName')).toEqual('Test');
expect(model.get('lastName')).toEqual('Person');
expect(successStub.calledOnce).toEqual(true);
expect(errorStub.notCalled).toEqual(true);

expect(successStub.calledOnce).toEqual(true);
expect(errorStub.notCalled).toEqual(true);
done();
}, 0)
});

function testMethodError(doCall) {
function testMethodError(doCall, done) {
var successStub = sinon.stub();
var errorStub = sinon.stub();

@@ -191,20 +199,24 @@ describe('Backbone Webdav extension', function() {
body: ''
});

expect(successStub.notCalled).toEqual(true);
expect(errorStub.calledOnce).toEqual(true);
setTimeout(function() {
expect(successStub.notCalled).toEqual(true);
expect(errorStub.calledOnce).toEqual(true);

done();
}, 0)
}

it('calls error handler if error status in PROPFIND response', function() {
it('calls error handler if error status in PROPFIND response', function(done) {
testMethodError(function(success, error) {
var collection = new TestCollection();
collection.fetch({
success: success,
error: error
});
});
}, done);
});
it('calls error handler if error status in POST response', function() {
it('calls error handler if error status in POST response', function(done) {
testMethodError(function(success, error) {
var collection = new TestCollection();
collection.create({
@@ -214,7 +226,7 @@ describe('Backbone Webdav extension', function() {
success: success,
error: error
});
});
}, done);
});
});
describe('models', function() {
@@ -281,7 +293,7 @@ describe('Backbone Webdav extension', function() {
expect(model.get('married')).toEqual(true);
});

it('uses PROPFIND to fetch single model', function() {
it('uses PROPFIND to fetch single model', function(done) {
var model = new TestModel({
id: '123'
});
@@ -319,11 +331,15 @@ describe('Backbone Webdav extension', function() {
}
});

expect(model.id).toEqual('123');
expect(model.get('firstName')).toEqual('Hello');
expect(model.get('lastName')).toEqual('World');
expect(model.get('age')).toEqual(35);
expect(model.get('married')).toEqual(true);
setTimeout(function() {
expect(model.id).toEqual('123');
expect(model.get('firstName')).toEqual('Hello');
expect(model.get('lastName')).toEqual('World');
expect(model.get('age')).toEqual(35);
expect(model.get('married')).toEqual(true);

done();
});
});
it('makes a DELETE request to destroy model', function() {
var model = new TestModel({
@@ -350,7 +366,7 @@ describe('Backbone Webdav extension', function() {
});
});

function testMethodError(doCall) {
function testMethodError(doCall, done) {
var successStub = sinon.stub();
var errorStub = sinon.stub();

@@ -361,20 +377,24 @@ describe('Backbone Webdav extension', function() {
body: ''
});

expect(successStub.notCalled).toEqual(true);
expect(errorStub.calledOnce).toEqual(true);
setTimeout(function() {
expect(successStub.notCalled).toEqual(true);
expect(errorStub.calledOnce).toEqual(true);

done();
});
}

it('calls error handler if error status in PROPFIND response', function() {
it('calls error handler if error status in PROPFIND response', function(done) {
testMethodError(function(success, error) {
var model = new TestModel();
model.fetch({
success: success,
error: error
});
});
}, done);
});
it('calls error handler if error status in PROPPATCH response', function() {
it('calls error handler if error status in PROPPATCH response', function(done) {
testMethodError(function(success, error) {
var model = new TestModel();
model.save({
@@ -383,7 +403,7 @@ describe('Backbone Webdav extension', function() {
success: success,
error: error
});
});
}, done);
});
});
});

+ 2
- 1
core/js/tests/specs/setupchecksSpec.js Ver arquivo

@@ -1114,7 +1114,8 @@ describe('OC.SetupChecks tests', function() {
{
'Content-Type': 'application/json',
'Strict-Transport-Security': 'max-age=15768000'
}
},
'{}'
);

async.done(function( data, s, x ){

+ 1
- 1
core/src/OC/l10n.js Ver arquivo

@@ -328,7 +328,7 @@ export default L10n
*
* @returns {String} locale string
*/
export const getLocale = () => $('html').data('locale')
export const getLocale = () => $('html').data('locale') ?? 'en'

/**
* Returns the user's language

+ 6
- 4
core/src/jquery/contactsmenu.js Ver arquivo

@@ -82,9 +82,10 @@ $.fn.contactsMenu = function(shareWith, shareType, appendTo) {
}

actions.forEach(function(action) {
const template = entryTemplate
$list.find('ul').append(template(action))
$list.find('ul').append(entryTemplate(action))
})

$div.trigger('load')
}, function(jqXHR) {
$list.find('ul').find('li').addClass('hidden')

@@ -95,11 +96,12 @@ $.fn.contactsMenu = function(shareWith, shareType, appendTo) {
title = t('core', 'Error fetching contact actions')
}

const template = entryTemplate
$list.find('ul').append(template({
$list.find('ul').append(entryTemplate({
hyperlink: '#',
title,
}))

$div.trigger('loaderror', jqXHR)
})
})


+ 6
- 6
package-lock.json Ver arquivo

@@ -6733,14 +6733,14 @@
"integrity": "sha1-elSbvZ/+FYWwzQoZHiAwVb7ldLQ="
},
"jquery": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz",
"integrity": "sha1-LInWiJterFIqfuoywUUhVZxsvwI="
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.1.1.tgz",
"integrity": "sha1-NHwcIcfgBBFeCk2jLOzgQfrTyKM="
},
"jquery-migrate": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jquery-migrate/-/jquery-migrate-1.4.1.tgz",
"integrity": "sha1-hRUvPsmalWJfT30Lz2LpuGOPWnY="
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/jquery-migrate/-/jquery-migrate-3.1.0.tgz",
"integrity": "sha512-u/MtE1ST2pCr3rCyouJG2xMiw/k3OzLNeRKprjKTeHUezCGr0DyEgeXFdqFLmQfxfR5EsVu+mGo/sCcYdiYcIQ=="
},
"jquery-ui": {
"version": "1.12.1",

+ 2
- 2
package.json Ver arquivo

@@ -55,8 +55,8 @@
"escape-html": "^1.0.3",
"handlebars": "^4.7.6",
"jcrop": "git+https://github.com/ChristophWurst/Jcrop.git#v0.9.12-npm3",
"jquery": "2.2.4",
"jquery-migrate": "^1.4.1",
"jquery": "~3.1",
"jquery-migrate": "~3.1",
"jquery-ui": "^1.12.1",
"jquery-ui-dist": "^1.12.1",
"jstimezonedetect": "^1.0.7",

Carregando…
Cancelar
Salvar