@wix/design-system
Version:
@wix/design-system
60 lines (59 loc) • 3.53 kB
JavaScript
"use strict";
var _utils = require("./utils");
describe('utils', () => {
describe('getScrollParent', () => {
afterEach(() => {
document.body.innerHTML = '';
});
it('should return the nearest scrollable parent', () => {
document.body.innerHTML = '<div data-hook="inner">' + ' <div data-hook="scrollable" style="overflow: auto;">' + ' <button id="button"></button>' + ' </div>' + '</div>';
var button = document.getElementById('button');
var scrollableDiv = document.querySelector('[data-hook="scrollable"]');
var result = (0, _utils.getScrollParent)(button);
expect(result).toBe(scrollableDiv);
});
it('should return the body if no scrollable parent is found', () => {
document.body.innerHTML = '<div data-hook="inner">' + ' <div data-hook="scrollable">' + ' <button id="button"></button>' + ' </div>' + '</div>';
var button = document.getElementById('button');
var result = (0, _utils.getScrollParent)(button);
expect(result).toBe(document.body);
});
});
describe('getByPredicate', () => {
afterEach(() => {
document.body.innerHTML = '';
});
it('should return the element that matches the predicate', () => {
document.body.innerHTML = "\n <div id=\"root\">\n <div class=\"child\" id=\"child1\"></div>\n <div class=\"child\" id=\"child2\"></div>\n <div class=\"child\" id=\"child3\"></div>\n </div>\n ";
var element = document.getElementById('child2');
var predicate = el => el.id === 'root';
var result = (0, _utils.getByPredicate)(predicate, element);
expect(result).not.toBeNull();
expect(result == null ? void 0 : result.id).toBe('root');
});
it('should return null if no element matches the predicate', () => {
document.body.innerHTML = "\n <div id=\"root\">\n <div class=\"child\" id=\"child1\"></div>\n <div class=\"child\" id=\"child2\"></div>\n <div class=\"child\" id=\"child3\"></div>\n </div>\n ";
var element = document.getElementById('child4');
var predicate = el => el.id === 'root';
var result = (0, _utils.getByPredicate)(predicate, element);
expect(result).toBeNull();
});
it('should return the root element if it matches the predicate', () => {
document.body.innerHTML = "\n <div id=\"root\">\n <div class=\"child\" id=\"child1\"></div>\n <div class=\"child\" id=\"child2\"></div>\n <div class=\"child\" id=\"child3\"></div>\n </div>\n ";
var element = document.getElementById('child2');
var predicate = el => el.id === 'child2';
var result = (0, _utils.getByPredicate)(predicate, element);
expect(result).not.toBeNull();
expect(result == null ? void 0 : result.id).toBe('child2');
});
it('should return the html element if no matches found', () => {
document.body.innerHTML = "\n <div id=\"root\">\n <div class=\"child\" id=\"child1\"></div>\n <div class=\"child\" id=\"child2\"></div>\n <div class=\"child\" id=\"child3\"></div>\n </div>\n ";
var element = document.getElementById('child2');
var predicate = el => el.id === 'child4';
var result = (0, _utils.getByPredicate)(predicate, element);
expect(result).not.toBeNull();
expect(result == null ? void 0 : result.nodeName).toBe('HTML');
});
});
});
//# sourceMappingURL=utils.spec.js.map