summaryrefslogtreecommitdiffstats
path: root/apps/files/tests
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2017-12-22 12:31:55 +0100
committerGitHub <noreply@github.com>2017-12-22 12:31:55 +0100
commite37fa60784f94abb6715704ffcbd479c05938e3a (patch)
tree7c3b22cc9dc5aa87c0319fcea497aca0b4bcd4df /apps/files/tests
parente40d6f6d8c54df43c302eaec7496080b42a49619 (diff)
parentc059fbd409b088f65922354149f6d2fd9b5d01b3 (diff)
downloadnextcloud-server-e37fa60784f94abb6715704ffcbd479c05938e3a.tar.gz
nextcloud-server-e37fa60784f94abb6715704ffcbd479c05938e3a.zip
Merge pull request #7591 from nextcloud/trigger-events-before-and-after-a-file-action-is-executed
Trigger events before and after a file action is executed
Diffstat (limited to 'apps/files/tests')
-rw-r--r--apps/files/tests/js/appSpec.js19
-rw-r--r--apps/files/tests/js/fileactionsSpec.js73
2 files changed, 89 insertions, 3 deletions
diff --git a/apps/files/tests/js/appSpec.js b/apps/files/tests/js/appSpec.js
index b9c323e7c12..5728991e197 100644
--- a/apps/files/tests/js/appSpec.js
+++ b/apps/files/tests/js/appSpec.js
@@ -112,9 +112,22 @@ describe('OCA.Files.App tests', function() {
App.initialize();
var actions = App.fileList.fileActions.actions;
- expect(actions.all.OverwriteThis.action).toBe(actionStub);
- expect(actions.all.LegacyTest.action).toBe(legacyActionStub);
- expect(actions.all.RegularTest.action).toBe(actionStub);
+ var context = { fileActions: sinon.createStubInstance(OCA.Files.FileActions) };
+ actions.all.OverwriteThis.action('testFileName', context);
+ expect(actionStub.calledOnce).toBe(true);
+ expect(context.fileActions._notifyUpdateListeners.callCount).toBe(2);
+ expect(context.fileActions._notifyUpdateListeners.getCall(0).calledWith('beforeTriggerAction')).toBe(true);
+ expect(context.fileActions._notifyUpdateListeners.getCall(1).calledWith('afterTriggerAction')).toBe(true);
+ actions.all.LegacyTest.action('testFileName', context);
+ expect(legacyActionStub.calledOnce).toBe(true);
+ expect(context.fileActions._notifyUpdateListeners.callCount).toBe(4);
+ expect(context.fileActions._notifyUpdateListeners.getCall(2).calledWith('beforeTriggerAction')).toBe(true);
+ expect(context.fileActions._notifyUpdateListeners.getCall(3).calledWith('afterTriggerAction')).toBe(true);
+ actions.all.RegularTest.action('testFileName', context);
+ expect(actionStub.calledTwice).toBe(true);
+ expect(context.fileActions._notifyUpdateListeners.callCount).toBe(6);
+ expect(context.fileActions._notifyUpdateListeners.getCall(4).calledWith('beforeTriggerAction')).toBe(true);
+ expect(context.fileActions._notifyUpdateListeners.getCall(5).calledWith('afterTriggerAction')).toBe(true);
// default one still there
expect(actions.dir.Open.action).toBeDefined();
});
diff --git a/apps/files/tests/js/fileactionsSpec.js b/apps/files/tests/js/fileactionsSpec.js
index 75a18713696..2dc8bb50920 100644
--- a/apps/files/tests/js/fileactionsSpec.js
+++ b/apps/files/tests/js/fileactionsSpec.js
@@ -299,6 +299,7 @@ describe('OCA.Files.FileActions tests', function() {
clock.restore();
});
it('passes context to action handler', function() {
+ var notifyUpdateListenersSpy = sinon.spy(fileList.fileActions, '_notifyUpdateListeners');
$tr.find('.action-test').click();
expect(actionStub.calledOnce).toEqual(true);
expect(actionStub.getCall(0).args[0]).toEqual('testName.txt');
@@ -309,6 +310,22 @@ describe('OCA.Files.FileActions tests', function() {
expect(context.dir).toEqual('/subdir');
expect(context.fileInfoModel.get('name')).toEqual('testName.txt');
+ expect(notifyUpdateListenersSpy.calledTwice).toEqual(true);
+ expect(notifyUpdateListenersSpy.calledBefore(actionStub)).toEqual(true);
+ expect(notifyUpdateListenersSpy.calledAfter(actionStub)).toEqual(true);
+ expect(notifyUpdateListenersSpy.getCall(0).args[0]).toEqual('beforeTriggerAction');
+ expect(notifyUpdateListenersSpy.getCall(0).args[1]).toEqual({
+ action: fileActions.getActions('all', OCA.Files.FileActions.TYPE_INLINE, OC.PERMISSION_READ)['Test'],
+ fileName: 'testName.txt',
+ context: context
+ });
+ expect(notifyUpdateListenersSpy.getCall(1).args[0]).toEqual('afterTriggerAction');
+ expect(notifyUpdateListenersSpy.getCall(1).args[1]).toEqual({
+ action: fileActions.getActions('all', OCA.Files.FileActions.TYPE_INLINE, OC.PERMISSION_READ)['Test'],
+ fileName: 'testName.txt',
+ context: context
+ });
+
// when data-path is defined
actionStub.reset();
$tr.attr('data-path', '/somepath');
@@ -317,6 +334,7 @@ describe('OCA.Files.FileActions tests', function() {
expect(context.dir).toEqual('/somepath');
});
it('also triggers action handler when calling triggerAction()', function() {
+ var notifyUpdateListenersSpy = sinon.spy(fileList.fileActions, '_notifyUpdateListeners');
var model = new OCA.Files.FileInfoModel({
id: 1,
name: 'Test.txt',
@@ -331,7 +349,62 @@ describe('OCA.Files.FileActions tests', function() {
expect(actionStub.getCall(0).args[1].fileList).toEqual(fileList);
expect(actionStub.getCall(0).args[1].fileActions).toEqual(fileActions);
expect(actionStub.getCall(0).args[1].fileInfoModel).toEqual(model);
+
+ expect(notifyUpdateListenersSpy.calledTwice).toEqual(true);
+ expect(notifyUpdateListenersSpy.calledBefore(actionStub)).toEqual(true);
+ expect(notifyUpdateListenersSpy.calledAfter(actionStub)).toEqual(true);
+ expect(notifyUpdateListenersSpy.getCall(0).args[0]).toEqual('beforeTriggerAction');
+ expect(notifyUpdateListenersSpy.getCall(0).args[1]).toEqual({
+ action: fileActions.getActions('all', OCA.Files.FileActions.TYPE_INLINE, OC.PERMISSION_READ)['Test'],
+ fileName: 'Test.txt',
+ context: {
+ fileActions: fileActions,
+ fileInfoModel: model,
+ dir: '/subdir',
+ fileList: fileList,
+ $file: fileList.findFileEl('Test.txt')
+ }
+ });
+ expect(notifyUpdateListenersSpy.getCall(1).args[0]).toEqual('afterTriggerAction');
+ expect(notifyUpdateListenersSpy.getCall(1).args[1]).toEqual({
+ action: fileActions.getActions('all', OCA.Files.FileActions.TYPE_INLINE, OC.PERMISSION_READ)['Test'],
+ fileName: 'Test.txt',
+ context: {
+ fileActions: fileActions,
+ fileInfoModel: model,
+ dir: '/subdir',
+ fileList: fileList,
+ $file: fileList.findFileEl('Test.txt')
+ }
+ });
});
+ it('triggers listener events when invoked directly', function() {
+ var context = {fileActions: new OCA.Files.FileActions()}
+ var notifyUpdateListenersSpy = sinon.spy(context.fileActions, '_notifyUpdateListeners');
+ var testAction = fileActions.get('all', OCA.Files.FileActions.TYPE_INLINE, OC.PERMISSION_READ)['Test'];
+
+ testAction('Test.txt', context);
+
+ expect(actionStub.calledOnce).toEqual(true);
+ expect(actionStub.getCall(0).args[0]).toEqual('Test.txt');
+ expect(actionStub.getCall(0).args[1]).toBe(context);
+
+ expect(notifyUpdateListenersSpy.calledTwice).toEqual(true);
+ expect(notifyUpdateListenersSpy.calledBefore(actionStub)).toEqual(true);
+ expect(notifyUpdateListenersSpy.calledAfter(actionStub)).toEqual(true);
+ expect(notifyUpdateListenersSpy.getCall(0).args[0]).toEqual('beforeTriggerAction');
+ expect(notifyUpdateListenersSpy.getCall(0).args[1]).toEqual({
+ action: fileActions.getActions('all', OCA.Files.FileActions.TYPE_INLINE, OC.PERMISSION_READ)['Test'],
+ fileName: 'Test.txt',
+ context: context
+ });
+ expect(notifyUpdateListenersSpy.getCall(1).args[0]).toEqual('afterTriggerAction');
+ expect(notifyUpdateListenersSpy.getCall(1).args[1]).toEqual({
+ action: fileActions.getActions('all', OCA.Files.FileActions.TYPE_INLINE, OC.PERMISSION_READ)['Test'],
+ fileName: 'Test.txt',
+ context: context
+ });
+ }),
describe('actions menu', function() {
it('shows actions menu inside row when clicking the menu trigger', function() {
expect($tr.find('td.filename .fileActionsMenu').length).toEqual(0);