0eb46b20cd52720f43f1a271f252bb0667f9482473638c0994e2c2d98f044a635f0083890014c95253474405db8ba96178520cefe240e2de6873be43724d1c 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. describe('Core_beforechange', () => {
  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('this.rootElement should point to handsontable rootElement', function() {
  13. var output = null;
  14. handsontable({
  15. beforeChange() {
  16. output = this.rootElement;
  17. }
  18. });
  19. setDataAtCell(0, 0, 'test');
  20. expect(output).toEqual(this.$container[0]);
  21. });
  22. it('should remove change from stack', () => {
  23. var output = null;
  24. handsontable({
  25. data: [['a', 'b'], ['c', 'd']],
  26. beforeChange(changes) {
  27. changes[1] = null;
  28. },
  29. afterChange(changes) {
  30. output = changes;
  31. }
  32. });
  33. setDataAtCell([[0, 0, 'test'], [1, 0, 'test'], [1, 1, 'test']]);
  34. expect(getDataAtCell(0, 0)).toEqual('test');
  35. expect(getDataAtCell(1, 0)).toEqual('c');
  36. expect(getDataAtCell(1, 1)).toEqual('test');
  37. expect(output).toEqual([[0, 0, 'a', 'test'], [1, 1, 'd', 'test']]);
  38. });
  39. it('should drop all changes when beforeChange return false', () => {
  40. var fired = false;
  41. handsontable({
  42. data: [['a', 'b'], ['c', 'd']],
  43. beforeChange(changes) {
  44. fired = true;
  45. return false;
  46. }
  47. });
  48. setDataAtCell([[0, 0, 'test'], [1, 0, 'test'], [1, 1, 'test']]);
  49. expect(getDataAtCell(0, 0)).toEqual('a');
  50. expect(getDataAtCell(1, 0)).toEqual('c');
  51. expect(getDataAtCell(1, 1)).toEqual('d');
  52. });
  53. function beforechangeOnKeyFactory(keyCode) {
  54. return function() {
  55. var called = false;
  56. handsontable({
  57. beforeChange(changes) {
  58. if (changes[0][2] === 'test' && changes[0][3] === '') {
  59. called = true;
  60. }
  61. }
  62. });
  63. setDataAtCell(0, 0, 'test');
  64. selectCell(0, 0);
  65. keyDown(keyCode);
  66. expect(called).toEqual(true);
  67. };
  68. }
  69. it('should be called on Delete key', beforechangeOnKeyFactory(46)); // 46 = Delete key
  70. it('should be called on Backspace key', beforechangeOnKeyFactory(8)); // 8 = Backspace key
  71. });