diff options
author | Vincent Petry <pvince81@owncloud.com> | 2014-06-27 13:36:18 +0200 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2014-06-27 13:41:01 +0200 |
commit | 586b3a9683421181b7cd66aff2d3fabd0f34531e (patch) | |
tree | 387b4488859d0173f164d5f94d9b5b58ea1f8a05 /apps/files/tests/js/fileactionsSpec.js | |
parent | 4d6019b73fd8b1a1d8e8fecbeb129bea12feb89d (diff) | |
download | nextcloud-server-586b3a9683421181b7cd66aff2d3fabd0f34531e.tar.gz nextcloud-server-586b3a9683421181b7cd66aff2d3fabd0f34531e.zip |
Sync file list with file actions
Whenever file actions are registered later, now the file lists are
automatically notified.
Added FileActions.addUpdateListener() to be able to receive such
notifications.
This removes the need for apps to manually call FileActions.display()
after registering new actions.
This fixes issues with race conditions when file actions are
registered after the file list was already rendered.
Diffstat (limited to 'apps/files/tests/js/fileactionsSpec.js')
-rw-r--r-- | apps/files/tests/js/fileactionsSpec.js | 53 |
1 files changed, 52 insertions, 1 deletions
diff --git a/apps/files/tests/js/fileactionsSpec.js b/apps/files/tests/js/fileactionsSpec.js index 355761afa01..f464800730a 100644 --- a/apps/files/tests/js/fileactionsSpec.js +++ b/apps/files/tests/js/fileactionsSpec.js @@ -21,7 +21,7 @@ describe('OCA.Files.FileActions tests', function() { var $filesTable, fileList; - var FileActions; + var FileActions; beforeEach(function() { // init horrible parameters @@ -36,6 +36,7 @@ describe('OCA.Files.FileActions tests', function() { }); afterEach(function() { FileActions = null; + fileList.destroy(); fileList = undefined; $('#dir, #permissions, #filestable').remove(); }); @@ -192,4 +193,54 @@ describe('OCA.Files.FileActions tests', function() { context = actionStub.getCall(0).args[1]; expect(context.dir).toEqual('/somepath'); }); + describe('events', function() { + var clock; + beforeEach(function() { + clock = sinon.useFakeTimers(); + }); + afterEach(function() { + clock.restore(); + }); + it('notifies update event handlers once after multiple changes', function() { + var actionStub = sinon.stub(); + var handler = sinon.stub(); + FileActions.addUpdateListener(handler); + FileActions.register( + 'all', + 'Test', + OC.PERMISSION_READ, + OC.imagePath('core', 'actions/test'), + actionStub + ); + FileActions.register( + 'all', + 'Test2', + OC.PERMISSION_READ, + OC.imagePath('core', 'actions/test'), + actionStub + ); + expect(handler.calledTwice).toEqual(true); + }); + it('does not notifies update event handlers after unregistering', function() { + var actionStub = sinon.stub(); + var handler = sinon.stub(); + FileActions.addUpdateListener(handler); + FileActions.removeUpdateListener(handler); + FileActions.register( + 'all', + 'Test', + OC.PERMISSION_READ, + OC.imagePath('core', 'actions/test'), + actionStub + ); + FileActions.register( + 'all', + 'Test2', + OC.PERMISSION_READ, + OC.imagePath('core', 'actions/test'), + actionStub + ); + expect(handler.notCalled).toEqual(true); + }); + }); }); |