Fix move related tests

Signed-off-by: Tomasz Grobelny <tomasz@grobelny.net>
This commit is contained in:
Tomasz Grobelny 2018-11-03 23:01:32 +00:00
parent 68a27debd1
commit 41687ef00f
2 changed files with 73 additions and 60 deletions

View file

@ -989,7 +989,7 @@
}); });
} }
this.move(_.pluck(files, 'name'), targetPath); var movePromise = this.move(_.pluck(files, 'name'), targetPath);
// re-enable td elements to be droppable // re-enable td elements to be droppable
// sometimes the filename drop handler is still called after re-enable, // sometimes the filename drop handler is still called after re-enable,
@ -997,6 +997,8 @@
setTimeout(function() { setTimeout(function() {
self.$el.find('td.filename.ui-droppable').droppable('enable'); self.$el.find('td.filename.ui-droppable').droppable('enable');
}, 10); }, 10);
return movePromise;
}, },
/** /**
@ -2229,8 +2231,8 @@
var mcSemaphore = new Semaphore(10); var mcSemaphore = new Semaphore(10);
var counter = 0; var counter = 0;
_.each(fileNames, function(arg) { var promises = _.map(fileNames, function(arg) {
mcSemaphore.acquire().then(function(){ return mcSemaphore.acquire().then(function(){
moveFileFunction(arg).then(function(){ moveFileFunction(arg).then(function(){
mcSemaphore.release(); mcSemaphore.release();
counter++; counter++;
@ -2238,9 +2240,11 @@
}); });
}); });
if (callback) { return Promise.all(promises).then(function(){
callback(); if (callback) {
} callback();
}
});
}, },
/** /**

View file

@ -838,84 +838,91 @@ describe('OCA.Files.FileList tests', function() {
moveStub.restore(); moveStub.restore();
}); });
it('Moves single file to target folder', function() { it('Moves single file to target folder', function(done) {
fileList.move('One.txt', '/somedir'); return fileList.move('One.txt', '/somedir').then(function(){
expect(moveStub.calledOnce).toEqual(true); expect(moveStub.calledOnce).toEqual(true);
expect(moveStub.getCall(0).args[0]).toEqual('/subdir/One.txt'); expect(moveStub.getCall(0).args[0]).toEqual('/subdir/One.txt');
expect(moveStub.getCall(0).args[1]).toEqual('/somedir/One.txt'); expect(moveStub.getCall(0).args[1]).toEqual('/somedir/One.txt');
deferredMove.resolve(201); deferredMove.resolve(201);
expect(fileList.findFileEl('One.txt').length).toEqual(0); expect(fileList.findFileEl('One.txt').length).toEqual(0);
// folder size has increased // folder size has increased
expect(fileList.findFileEl('somedir').data('size')).toEqual(262); expect(fileList.findFileEl('somedir').data('size')).toEqual(262);
expect(fileList.findFileEl('somedir').find('.filesize').text()).toEqual('262 B'); expect(fileList.findFileEl('somedir').find('.filesize').text()).toEqual('262 B');
expect(notificationStub.notCalled).toEqual(true); expect(notificationStub.notCalled).toEqual(true);
done();
});
}); });
it('Moves list of files to target folder', function() { it('Moves list of files to target folder', function(done) {
var deferredMove1 = $.Deferred(); var deferredMove1 = $.Deferred();
var deferredMove2 = $.Deferred(); var deferredMove2 = $.Deferred();
moveStub.onCall(0).returns(deferredMove1.promise()); moveStub.onCall(0).returns(deferredMove1.promise());
moveStub.onCall(1).returns(deferredMove2.promise()); moveStub.onCall(1).returns(deferredMove2.promise());
fileList.move(['One.txt', 'Two.jpg'], '/somedir'); return fileList.move(['One.txt', 'Two.jpg'], '/somedir').then(function(){
expect(moveStub.calledTwice).toEqual(true); expect(moveStub.calledTwice).toEqual(true);
expect(moveStub.getCall(0).args[0]).toEqual('/subdir/One.txt'); expect(moveStub.getCall(0).args[0]).toEqual('/subdir/One.txt');
expect(moveStub.getCall(0).args[1]).toEqual('/somedir/One.txt'); expect(moveStub.getCall(0).args[1]).toEqual('/somedir/One.txt');
expect(moveStub.getCall(1).args[0]).toEqual('/subdir/Two.jpg'); expect(moveStub.getCall(1).args[0]).toEqual('/subdir/Two.jpg');
expect(moveStub.getCall(1).args[1]).toEqual('/somedir/Two.jpg'); expect(moveStub.getCall(1).args[1]).toEqual('/somedir/Two.jpg');
deferredMove1.resolve(201); deferredMove1.resolve(201);
expect(fileList.findFileEl('One.txt').length).toEqual(0); expect(fileList.findFileEl('One.txt').length).toEqual(0);
// folder size has increased during move // folder size has increased during move
expect(fileList.findFileEl('somedir').data('size')).toEqual(262); expect(fileList.findFileEl('somedir').data('size')).toEqual(262);
expect(fileList.findFileEl('somedir').find('.filesize').text()).toEqual('262 B'); expect(fileList.findFileEl('somedir').find('.filesize').text()).toEqual('262 B');
deferredMove2.resolve(201); deferredMove2.resolve(201);
expect(fileList.findFileEl('Two.jpg').length).toEqual(0); expect(fileList.findFileEl('Two.jpg').length).toEqual(0);
// folder size has increased // folder size has increased
expect(fileList.findFileEl('somedir').data('size')).toEqual(12311); expect(fileList.findFileEl('somedir').data('size')).toEqual(12311);
expect(fileList.findFileEl('somedir').find('.filesize').text()).toEqual('12 KB'); expect(fileList.findFileEl('somedir').find('.filesize').text()).toEqual('12 KB');
expect(notificationStub.notCalled).toEqual(true); expect(notificationStub.notCalled).toEqual(true);
done();
});
}); });
it('Shows notification if a file could not be moved', function() { it('Shows notification if a file could not be moved', function(done) {
fileList.move('One.txt', '/somedir'); return fileList.move('One.txt', '/somedir').then(function(){
expect(moveStub.calledOnce).toEqual(true); expect(moveStub.calledOnce).toEqual(true);
deferredMove.reject(409); deferredMove.reject(409);
expect(fileList.findFileEl('One.txt').length).toEqual(1); expect(fileList.findFileEl('One.txt').length).toEqual(1);
expect(notificationStub.calledOnce).toEqual(true); expect(notificationStub.calledOnce).toEqual(true);
expect(notificationStub.getCall(0).args[0]).toEqual('Could not move "One.txt"'); expect(notificationStub.getCall(0).args[0]).toEqual('Could not move "One.txt"');
done();
});
}); });
it('Restores thumbnail if a file could not be moved', function() { it('Restores thumbnail if a file could not be moved', function() {
fileList.move('One.txt', '/somedir'); return fileList.move('One.txt', '/somedir').then(function(){
expect(fileList.findFileEl('One.txt').find('.thumbnail').parent().attr('class')) expect(fileList.findFileEl('One.txt').find('.thumbnail').parent().attr('class'))
.toContain('icon-loading-small'); .toContain('icon-loading-small');
expect(moveStub.calledOnce).toEqual(true); expect(moveStub.calledOnce).toEqual(true);
deferredMove.reject(409); deferredMove.reject(409);
expect(fileList.findFileEl('One.txt').length).toEqual(1); expect(fileList.findFileEl('One.txt').length).toEqual(1);
expect(notificationStub.calledOnce).toEqual(true); expect(notificationStub.calledOnce).toEqual(true);
expect(notificationStub.getCall(0).args[0]).toEqual('Could not move "One.txt"'); expect(notificationStub.getCall(0).args[0]).toEqual('Could not move "One.txt"');
expect(OC.TestUtil.getImageUrl(fileList.findFileEl('One.txt').find('.thumbnail'))) expect(OC.TestUtil.getImageUrl(fileList.findFileEl('One.txt').find('.thumbnail')))
.toEqual(OC.imagePath('core', 'filetypes/text.svg')); .toEqual(OC.imagePath('core', 'filetypes/text.svg'));
});
}); });
}); });
@ -1757,7 +1764,7 @@ describe('OCA.Files.FileList tests', function() {
expect(changeDirStub.getCall(0).args[0]).toEqual('/subdir/two/three with space'); expect(changeDirStub.getCall(0).args[0]).toEqual('/subdir/two/three with space');
changeDirStub.restore(); changeDirStub.restore();
}); });
it('dropping files on breadcrumb calls move operation', function() { it('dropping files on breadcrumb calls move operation', function(done) {
var testDir = '/subdir/two/three with space/four/five'; var testDir = '/subdir/two/three with space/four/five';
var moveStub = sinon.stub(filesClient, 'move').returns($.Deferred().promise()); var moveStub = sinon.stub(filesClient, 'move').returns($.Deferred().promise());
fileList.changeDirectory(testDir); fileList.changeDirectory(testDir);
@ -1775,14 +1782,16 @@ describe('OCA.Files.FileList tests', function() {
$('<tr data-file="Two.jpg" data-dir="' + testDir + '"></tr>') $('<tr data-file="Two.jpg" data-dir="' + testDir + '"></tr>')
]); ]);
// simulate drop event // simulate drop event
fileList._onDropOnBreadCrumb(new $.Event('drop', {target: $crumb}), ui); return fileList._onDropOnBreadCrumb(new $.Event('drop', {target: $crumb}), ui).then(function(){
expect(moveStub.callCount).toEqual(2); expect(moveStub.callCount).toEqual(2);
expect(moveStub.getCall(0).args[0]).toEqual(testDir + '/One.txt'); expect(moveStub.getCall(0).args[0]).toEqual(testDir + '/One.txt');
expect(moveStub.getCall(0).args[1]).toEqual('/subdir/two/three with space/One.txt'); expect(moveStub.getCall(0).args[1]).toEqual('/subdir/two/three with space/One.txt');
expect(moveStub.getCall(1).args[0]).toEqual(testDir + '/Two.jpg'); expect(moveStub.getCall(1).args[0]).toEqual(testDir + '/Two.jpg');
expect(moveStub.getCall(1).args[1]).toEqual('/subdir/two/three with space/Two.jpg'); expect(moveStub.getCall(1).args[1]).toEqual('/subdir/two/three with space/Two.jpg');
moveStub.restore(); moveStub.restore();
done();
});
}); });
it('dropping files on same dir breadcrumb does nothing', function() { it('dropping files on same dir breadcrumb does nothing', function() {
var testDir = '/subdir/two/three with space/four/five'; var testDir = '/subdir/two/three with space/four/five';