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 = '
';
var test2 = ``;
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);
});
});
});