libdom
Version:
Lean Browser Library for typical DOM operations
103 lines (77 loc) • 3.51 kB
JavaScript
;
describe(`Selects all DOM Elements matching CSS [selector] within the given
[dom] Document or Element Node using select(dom:Node,
'selector:String) method`,
() => {
var select = global.libdom.select,
libcore = global.libcore,
doc = global.document;
var fragment;
beforeEach(() => {
var element = doc.createElement('div');
doc.body.innerHTML = element.innerHTML = `
<div id="container">
<span id="title">Title here</span>
<ul id="list">
<li id="item1">Item 1</li>
<li id="item2">Item 2</li>
</ul>
</div>
`;
fragment = doc.createDocumentFragment();
fragment.appendChild(element);
});
it(`1. Should accept [dom] Document Node and String [selector]
parameter and returns an Array of DOM Elements result.`,
() => {
expect(() => select(doc, 'div ul li')).
not.toThrow();
expect(select(doc, 'div ul li')).
toEqual([
doc.getElementById("item1"),
doc.getElementById("item2")
]);
});
it(`2. Should accept [dom] Element Node and String [selector]
parameter and returns an Array of DOM Elements result.`,
() => {
var element = doc.getElementById('container');
expect(() => select(element, 'ul li')).
not.toThrow();
expect(select(element, 'ul li')).
toEqual([
doc.getElementById("item1"),
doc.getElementById("item2")
]);
});
it(`3. Should not accept non-Element or non-Document Node [dom]
parameter and throws an exception.`,
() => {
// document fragment
expect(() => select(fragment, 'ul li')).toThrow();
// text node
expect(() => select(doc.createTextNode("test"),
'ul li')).toThrow();
});
it(`4. Should not accept non-DOM Node [dom]
parameter and throws an exception.`,
() => {
expect(() => select(null, 'ul li')).toThrow();
expect(() => select(1, 'ul li')).toThrow();
expect(() => select(/test/, 'ul li')).toThrow();
expect(() => select(new Date(), 'ul li')).toThrow();
expect(() => select([], 'ul li')).toThrow();
expect(() => select({}, 'ul li')).toThrow();
});
it(`5. Should not accept non-String or empty String [selector]
parameter and throws an exception.`,
() => {
var element = doc.getElementById('container');
expect(() => select(element, null)).toThrow();
expect(() => select(element, 1)).toThrow();
expect(() => select(element, /test/)).toThrow();
expect(() => select(element, new Date())).toThrow();
expect(() => select(element, [])).toThrow();
expect(() => select(element, {})).toThrow();
});
});