From 074d3a8f074e388768853f58de3712293ba3aef1 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Mon, 23 Jun 2014 12:55:42 +0200 Subject: [PATCH] Clear file selection when list is repopulated When calling FileList.setFiles() the current selection needs to be cleared. --- apps/files/js/filelist.js | 2 ++ apps/files/tests/js/filelistSpec.js | 34 ++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 241997be2b..fb97b2f459 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -512,6 +512,8 @@ this.fileSummary.calculate(filesArray); + this._selectedFiles = {}; + this._selectionSummary.clear(); this.updateSelectionSummary(); $(window).scrollTop(0); diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js index 011e73d4b3..743ebf9706 100644 --- a/apps/files/tests/js/filelistSpec.js +++ b/apps/files/tests/js/filelistSpec.js @@ -1368,7 +1368,8 @@ describe('OCA.Files.FileList tests', function() { "Content-Type": "application/json" }, JSON.stringify(data) - ]); + ] + ); fileList.changeDirectory('/'); fakeServer.respond(); expect($('.select-all').prop('checked')).toEqual(false); @@ -1386,6 +1387,37 @@ describe('OCA.Files.FileList tests', function() { expect(selectedFiles.length).toEqual(41); }); + describe('clearing the selection', function() { + it('clears selected files selected individually calling setFiles()', function() { + var selectedFiles; + + fileList.setFiles(generateFiles(0, 41)); + fileList.$fileList.find('tr:eq(5) input:checkbox:first').click(); + fileList.$fileList.find('tr:eq(7) input:checkbox:first').click(); + + selectedFiles = _.pluck(fileList.getSelectedFiles(), 'name'); + expect(selectedFiles.length).toEqual(2); + + fileList.setFiles(generateFiles(0, 2)); + + selectedFiles = _.pluck(fileList.getSelectedFiles(), 'name'); + expect(selectedFiles.length).toEqual(0); + }); + it('clears selected files selected with select all when calling setFiles()', function() { + var selectedFiles; + + fileList.setFiles(generateFiles(0, 41)); + $('.select-all').click(); + + selectedFiles = _.pluck(fileList.getSelectedFiles(), 'name'); + expect(selectedFiles.length).toEqual(42); + + fileList.setFiles(generateFiles(0, 2)); + + selectedFiles = _.pluck(fileList.getSelectedFiles(), 'name'); + expect(selectedFiles.length).toEqual(0); + }); + }); describe('Selection overlay', function() { it('show delete action according to directory permissions', function() { fileList.setFiles(testFiles);