bpmn-js/test/spec/features/keyboard/BpmnKeyboardBindingsSpec.js

202 lines
4.4 KiB
JavaScript

/* global sinon */
import {
bootstrapViewer,
inject
} from 'test/TestHelper';
import { forEach } from 'min-dash';
import copyPasteModule from 'lib/features/copy-paste';
import coreModule from 'lib/core';
import editorActionsModule from 'lib/features/editor-actions';
import globalConnectModule from 'diagram-js/lib/features/global-connect';
import handToolModule from 'diagram-js/lib/features/hand-tool';
import keyboardModule from 'lib/features/keyboard';
import labelEditingModule from 'lib/features/label-editing';
import lassoToolModule from 'diagram-js/lib/features/lasso-tool';
import modelingModule from 'lib/features/modeling';
import searchModule from 'lib/features/search';
import spaceToolModule from 'diagram-js/lib/features/space-tool';
import {
createKeyEvent
} from 'test/util/KeyEvents';
describe('features/keyboard', function() {
var diagramXML = require('../../../fixtures/bpmn/simple.bpmn');
var testModules = [
copyPasteModule,
coreModule,
editorActionsModule,
globalConnectModule,
handToolModule,
keyboardModule,
labelEditingModule,
lassoToolModule,
modelingModule,
searchModule,
spaceToolModule
];
beforeEach(bootstrapViewer(diagramXML, { modules: testModules }));
describe('bpmn keyboard bindings', function() {
it('should include triggers inside editorActions', inject(function(editorActions) {
// given
var expectedActions = [
'undo',
'redo',
'copy',
'paste',
'zoom',
'removeSelection',
'selectElements',
'spaceTool',
'lassoTool',
'handTool',
'globalConnectTool',
'setColor',
'directEditing',
'find',
'moveToOrigin'
];
// then
expect(editorActions.getActions()).to.eql(expectedActions);
}));
forEach(['c', 'C'], function(key) {
it('should global connect tool for key ' + key, inject(function(keyboard, globalConnect) {
sinon.spy(globalConnect, 'toggle');
// given
var e = createKeyEvent(key);
// when
keyboard._keyHandler(e);
// then
expect(globalConnect.toggle).to.have.been.calledOnce;
}));
});
forEach(['l', 'L'], function(key) {
it('should trigger lasso tool for key ' + key, inject(function(keyboard, lassoTool) {
sinon.spy(lassoTool, 'activateSelection');
// given
var e = createKeyEvent(key);
// when
keyboard._keyHandler(e);
// then
expect(lassoTool.activateSelection).to.have.been.calledOnce;
}));
});
forEach(['s', 'S'], function(key) {
it('should trigger space tool', inject(function(keyboard, spaceTool) {
sinon.spy(spaceTool, 'activateSelection');
// given
var e = createKeyEvent(key);
// when
keyboard._keyHandler(e);
// then
expect(spaceTool.activateSelection).to.have.been.calledOnce;
}));
});
forEach(['e', 'E'], function(key) {
it('should trigger direct editing', inject(function(keyboard, selection, elementRegistry, directEditing) {
sinon.spy(directEditing, 'activate');
// given
var task = elementRegistry.get('Task_1');
selection.select(task);
var e = createKeyEvent(key);
// when
keyboard._keyHandler(e);
// then
expect(directEditing.activate).to.have.been.calledOnce;
}));
});
forEach(['a', 'A'], function(key) {
it('should select all elements',
inject(function(canvas, keyboard, selection, elementRegistry) {
// given
var e = createKeyEvent(key, { ctrlKey: true });
var allElements = elementRegistry.getAll(),
rootElement = canvas.getRootElement();
// when
keyboard._keyHandler(e);
// then
var selectedElements = selection.get();
expect(selectedElements).to.have.length(allElements.length - 1);
expect(selectedElements).not.to.contain(rootElement);
})
);
});
forEach(['f', 'F'], function(key) {
it('should trigger search for labels', inject(function(keyboard, searchPad) {
sinon.spy(searchPad, 'toggle');
// given
var e = createKeyEvent(key, { ctrlKey: true });
// when
keyboard._keyHandler(e);
// then
expect(searchPad.toggle).to.have.been.calledOnce;
}));
});
});
});