Element.spec.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import {isInput, closestDown, getParent} from 'handsontable/helpers/dom/element';
  2. describe('DomElement helper', () => {
  3. //
  4. // Handsontable.helper.isInput
  5. //
  6. describe('isInput', () => {
  7. it('should return true for inputs, selects, and textareas', () => {
  8. expect(isInput(document.createElement('input'))).toBe(true);
  9. expect(isInput(document.createElement('select'))).toBe(true);
  10. expect(isInput(document.createElement('textarea'))).toBe(true);
  11. });
  12. it('should return true for contentEditable elements', () => {
  13. var div = document.createElement('div');
  14. div.contentEditable = 'true';
  15. expect(isInput(div)).toBe(true);
  16. });
  17. });
  18. //
  19. // Handsontable.helper.closestDown
  20. //
  21. describe('closestDown', () => {
  22. var test1 = '<div class="wrapper1"><table><tbody><tr><td class="test1">test1</td></tr></tbody></table></div>';
  23. var test2 = `<div class="wrapper2"><table><tbody><tr><td class="test2">test2${test1}</td></tr></tbody></table></div>`;
  24. it('should return last TD element (starting from last child element)', () => {
  25. var wrapper = document.createElement('div');
  26. wrapper.innerHTML = test2;
  27. var td1 = wrapper.querySelector('.test1');
  28. var td2 = wrapper.querySelector('.test2');
  29. expect(closestDown(td1, ['TD'])).toBe(td2);
  30. });
  31. it('should return proper value depends on passed `until` element', () => {
  32. var td = document.createElement('td');
  33. td.innerHTML = test2;
  34. var wrapper2 = td.querySelector('.wrapper2');
  35. expect(closestDown(wrapper2, ['TD'])).toBe(td);
  36. expect(closestDown(wrapper2, ['TD'], wrapper2.firstChild)).toBe(null);
  37. });
  38. });
  39. //
  40. // Handsontable.helper.getParent
  41. //
  42. describe('getParent', () => {
  43. var element = null;
  44. beforeEach(() => {
  45. element = document.createElement('div');
  46. element.innerHTML = '<div id="a1"><ul id="a2"></ul><ul id="b2"><li id="a3"><span id="a4">HELLO</span></li></ul></div>';
  47. });
  48. afterEach(() => {
  49. element = null;
  50. });
  51. it('should return the node parent only from the one level deep', () => {
  52. expect(getParent(element.querySelector('#a4'))).toBe(element.querySelector('#a3'));
  53. expect(getParent(element.querySelector('#a1'))).toBe(element);
  54. });
  55. it('should return the node parent from the defined level deep', () => {
  56. expect(getParent(element.querySelector('#a4'), 0)).toBe(element.querySelector('#a3'));
  57. expect(getParent(element.querySelector('#a4'), 1)).toBe(element.querySelector('#b2'));
  58. expect(getParent(element.querySelector('#a4'), 2)).toBe(element.querySelector('#a1'));
  59. expect(getParent(element.querySelector('#a4'), 3)).toBe(element);
  60. expect(getParent(element.querySelector('#a4'), 4)).toBe(null);
  61. expect(getParent(element.querySelector('#a4'), 5)).toBe(null);
  62. expect(getParent(element.querySelector('#a2'), 0)).toBe(element.querySelector('#a1'));
  63. expect(getParent(element.querySelector('#a2'), 1)).toBe(element);
  64. });
  65. });
  66. });