c152c3558e7c77042bfa321783583b21509ffb15ad302a873316dccc6faedd57b76eb411c32cce54f707c97cf15332b3f04d746ae32643a5e361a34c0f24ee 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. describe('Core_beforeKeyDown', () => {
  2. var id = 'testContainer';
  3. beforeEach(function() {
  4. this.$container = $(`<div id="${id}"></div>`).appendTo('body');
  5. });
  6. afterEach(function() {
  7. if (this.$container) {
  8. destroy();
  9. this.$container.remove();
  10. }
  11. });
  12. it('should run beforeKeyDown hook', () => {
  13. var called = false;
  14. handsontable({
  15. data: [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]],
  16. beforeKeyDown(event) {
  17. called = true;
  18. }
  19. });
  20. selectCell(0, 0);
  21. keyDown('arrow_right');
  22. expect(called).toEqual(true);
  23. });
  24. it('should run afterDocumentKeyDown and beforeKeyDown hook', () => {
  25. var called = [];
  26. handsontable({
  27. data: [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]],
  28. afterDocumentKeyDown() {
  29. called.push('afterDocumentKeyDown');
  30. },
  31. beforeKeyDown() {
  32. called.push('beforeKeyDown');
  33. }
  34. });
  35. selectCell(0, 0);
  36. keyDown('arrow_right');
  37. expect(called).toEqual(['afterDocumentKeyDown', 'beforeKeyDown']);
  38. });
  39. it('should prevent hook from running default action', () => {
  40. var called = false;
  41. handsontable({
  42. data: [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]],
  43. beforeKeyDown(event) {
  44. event = serveImmediatePropagation(event);
  45. event.stopImmediatePropagation();
  46. called = true;
  47. }
  48. });
  49. selectCell(0, 0);
  50. keyDown('arrow_right');
  51. expect(getSelected()).toEqual([0, 0, 0, 0]);
  52. expect(getSelected()).not.toEqual([0, 1, 0, 1]);
  53. });
  54. it('should overwrite default behavior of delete key, but not this of right arrow', () => {
  55. var called = 0;
  56. handsontable({
  57. data: [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]],
  58. beforeKeyDown(event) {
  59. if (event.keyCode === 8) {
  60. event.stopImmediatePropagation();
  61. getInstance().alter('insert_row', 1, 1);
  62. }
  63. called++;
  64. }
  65. });
  66. selectCell(0, 0);
  67. keyDown('backspace');
  68. keyDown('arrow_right');
  69. expect(getData().length).toEqual(3);
  70. expect(getSelected()).toEqual([0, 1, 0, 1]);
  71. });
  72. it('should run beforeKeyDown hook in cell editor handler', () => {
  73. var called = 0;
  74. handsontable({
  75. data: [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]],
  76. beforeKeyDown(event) {
  77. called++;
  78. }
  79. });
  80. selectCell(0, 0);
  81. keyDown('enter');
  82. keyDown('enter');
  83. expect(called).toEqual(2);
  84. });
  85. });