import {isInput, closestDown, getParent} from 'handsontable/helpers/dom/element'; describe('DomElement helper', () => { // // Handsontable.helper.isInput // describe('isInput', () => { it('should return true for inputs, selects, and textareas', () => { expect(isInput(document.createElement('input'))).toBe(true); expect(isInput(document.createElement('select'))).toBe(true); expect(isInput(document.createElement('textarea'))).toBe(true); }); it('should return true for contentEditable elements', () => { var div = document.createElement('div'); div.contentEditable = 'true'; expect(isInput(div)).toBe(true); }); }); // // Handsontable.helper.closestDown // describe('closestDown', () => { var test1 = '
test1
'; var test2 = `
test2${test1}
`; it('should return last TD element (starting from last child element)', () => { var wrapper = document.createElement('div'); wrapper.innerHTML = test2; var td1 = wrapper.querySelector('.test1'); var td2 = wrapper.querySelector('.test2'); expect(closestDown(td1, ['TD'])).toBe(td2); }); it('should return proper value depends on passed `until` element', () => { var td = document.createElement('td'); td.innerHTML = test2; var wrapper2 = td.querySelector('.wrapper2'); expect(closestDown(wrapper2, ['TD'])).toBe(td); expect(closestDown(wrapper2, ['TD'], wrapper2.firstChild)).toBe(null); }); }); // // Handsontable.helper.getParent // describe('getParent', () => { var element = null; beforeEach(() => { element = document.createElement('div'); element.innerHTML = '
'; }); afterEach(() => { element = null; }); it('should return the node parent only from the one level deep', () => { expect(getParent(element.querySelector('#a4'))).toBe(element.querySelector('#a3')); expect(getParent(element.querySelector('#a1'))).toBe(element); }); it('should return the node parent from the defined level deep', () => { expect(getParent(element.querySelector('#a4'), 0)).toBe(element.querySelector('#a3')); expect(getParent(element.querySelector('#a4'), 1)).toBe(element.querySelector('#b2')); expect(getParent(element.querySelector('#a4'), 2)).toBe(element.querySelector('#a1')); expect(getParent(element.querySelector('#a4'), 3)).toBe(element); expect(getParent(element.querySelector('#a4'), 4)).toBe(null); expect(getParent(element.querySelector('#a4'), 5)).toBe(null); expect(getParent(element.querySelector('#a2'), 0)).toBe(element.querySelector('#a1')); expect(getParent(element.querySelector('#a2'), 1)).toBe(element); }); }); });