Core_beforeKeyDown.spec.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. describe('Core_beforeKeyDown', () => {
  2. const 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. let called = false;
  14. handsontable({
  15. data: [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]],
  16. beforeKeyDown() {
  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. const 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. handsontable({
  41. data: [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]],
  42. beforeKeyDown(event) {
  43. serveImmediatePropagation(event).stopImmediatePropagation();
  44. }
  45. });
  46. selectCell(0, 0);
  47. keyDown('arrow_right');
  48. expect(getSelected()).toEqual([[0, 0, 0, 0]]);
  49. expect(getSelected()).not.toEqual([[0, 1, 0, 1]]);
  50. });
  51. it('should overwrite default behavior of delete key, but not this of right arrow', () => {
  52. handsontable({
  53. data: [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]],
  54. beforeKeyDown(event) {
  55. if (event.keyCode === 8) {
  56. event.stopImmediatePropagation();
  57. getInstance().alter('insert_row', 1, 1);
  58. }
  59. }
  60. });
  61. selectCell(0, 0);
  62. keyDown('backspace');
  63. keyDown('arrow_right');
  64. expect(getData().length).toEqual(3);
  65. expect(getSelected()).toEqual([[0, 1, 0, 1]]);
  66. });
  67. it('should run beforeKeyDown hook in cell editor handler', () => {
  68. let called = 0;
  69. handsontable({
  70. data: [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]],
  71. beforeKeyDown() {
  72. called += 1;
  73. }
  74. });
  75. selectCell(0, 0);
  76. keyDown('enter');
  77. keyDown('enter');
  78. expect(called).toEqual(2);
  79. });
  80. });