ZoomSpec.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import {
  2. bootstrapDiagram,
  3. inject
  4. } from 'test/TestHelper';
  5. import {
  6. forEach
  7. } from 'min-dash';
  8. import editorActionsModule from 'lib/features/editor-actions';
  9. import zoomScrollModule from 'lib/navigation/zoomscroll';
  10. import keyboardModule from 'lib/features/keyboard';
  11. import { createKeyEvent } from 'test/util/KeyEvents';
  12. var KEYS = {
  13. ZOOM_IN: [ '+', 'Add' ],
  14. ZOOM_OUT: [ '-', 'Subtract' ],
  15. ZOOM_DEFAULT: [ '0' ],
  16. };
  17. describe('features/keyboard - zoom', function() {
  18. var defaultDiagramConfig = {
  19. modules: [
  20. keyboardModule,
  21. editorActionsModule,
  22. zoomScrollModule
  23. ],
  24. canvas: {
  25. deferUpdate: false
  26. }
  27. };
  28. var decisionTable = [{
  29. desc: 'zoom in',
  30. keys: KEYS.ZOOM_IN,
  31. ctrlKey: true,
  32. defaultZoom: 3,
  33. zoom: 4
  34. }, {
  35. desc: 'zoom out',
  36. keys: KEYS.ZOOM_OUT,
  37. ctrlKey: true,
  38. defaultZoom: 3,
  39. zoom: 2.456
  40. }, {
  41. desc: 'zoom default',
  42. keys: KEYS.ZOOM_DEFAULT,
  43. ctrlKey: true,
  44. defaultZoom: 3,
  45. zoom: 1
  46. }];
  47. beforeEach(bootstrapDiagram(defaultDiagramConfig));
  48. forEach(decisionTable, function(testCase) {
  49. forEach(testCase.keys, function(key) {
  50. it('should handle ' + key + ' for ' + testCase.desc, inject(function(canvas, keyboard) {
  51. // given
  52. canvas.zoom(testCase.defaultZoom);
  53. var event = createKeyEvent(key, {
  54. ctrlKey: testCase.ctrlKey
  55. });
  56. // when
  57. keyboard._keyHandler(event);
  58. // then
  59. expect(canvas.zoom()).to.be.equal(testCase.zoom);
  60. expect(event.defaultPrevented).to.be.true;
  61. }));
  62. });
  63. });
  64. });