RedoSpec.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. /* global sinon */
  2. import {
  3. bootstrapDiagram,
  4. inject
  5. } from 'test/TestHelper';
  6. import {
  7. forEach
  8. } from 'min-dash';
  9. import modelingModule from 'lib/features/modeling';
  10. import editorActionsModule from 'lib/features/editor-actions';
  11. import keyboardModule from 'lib/features/keyboard';
  12. import { createKeyEvent } from 'test/util/KeyEvents';
  13. var spy = sinon.spy;
  14. var KEYS = {
  15. Z: [ 'z', 'Z' ],
  16. Y: [ 'y', 'y' ]
  17. };
  18. describe('features/keyboard - redo', function() {
  19. var defaultDiagramConfig = {
  20. modules: [
  21. modelingModule,
  22. keyboardModule,
  23. editorActionsModule
  24. ],
  25. canvas: {
  26. deferUpdate: false
  27. }
  28. };
  29. var decisionTable = [{
  30. desc: 'should call redo',
  31. keys: KEYS.Z,
  32. ctrlKey: true,
  33. shiftKey: true,
  34. called: true
  35. }, {
  36. desc: 'should call redo',
  37. keys: KEYS.Y,
  38. ctrlKey: true,
  39. shiftKey: false,
  40. called: true
  41. }, {
  42. desc: 'should call redo',
  43. keys: KEYS.Y,
  44. ctrlKey: true,
  45. shiftKey: true,
  46. called: true
  47. }, {
  48. desc: 'should not call redo',
  49. keys: KEYS.Z,
  50. ctrlKey: false,
  51. shiftKey: true,
  52. called: false
  53. }, {
  54. desc: 'should not call redo',
  55. keys: KEYS.Z,
  56. ctrlKey: true,
  57. shiftKey: false,
  58. called: false
  59. }, {
  60. desc: 'should not call redo',
  61. keys: KEYS.Y,
  62. ctrlKey: false,
  63. shiftKey: false,
  64. called: false
  65. }, {
  66. desc: 'should not call redo',
  67. keys: KEYS.Z,
  68. ctrlKey: false,
  69. shiftKey: false,
  70. called: false
  71. }];
  72. beforeEach(bootstrapDiagram(defaultDiagramConfig));
  73. forEach(decisionTable, function(testCase) {
  74. forEach(testCase.keys, function(key) {
  75. it(testCase.desc, inject(function(keyboard, editorActions) {
  76. // given
  77. var redoSpy = spy(editorActions, 'trigger');
  78. var event = createKeyEvent(key, {
  79. ctrlKey: testCase.ctrlKey,
  80. shiftKey: testCase.shiftKey
  81. });
  82. // when
  83. keyboard._keyHandler(event);
  84. // then
  85. expect(redoSpy.calledWith('redo')).to.be.equal(testCase.called);
  86. }));
  87. });
  88. });
  89. });