@onenexus/squery
Version:
Interact with Synergy modules/BEM DOM elements
74 lines (62 loc) • 2.63 kB
JavaScript
const TEMPLATE = (`
<div class="foo foo-pancake test" id="SVRNE">
<div class="fizz" id="HH156"></div>
<div class="fizz" id="A0BG9"></div>
<div class="alpha" id="HY7S3">
<div class="fizz" id="ZSAE6"></div>
<div class="fizz" id="N1WY1"></div>
</div>
</div>
<div class="alpha" id="KJ4PM">
<div class="fizz" id="M1FAC"></div>
<div class="fizz" id="EI7RQ"></div>
</div>
`);
document.body.innerHTML = TEMPLATE;
let EL, ELS;
describe('sQuery `component` API', () => {
beforeEach('setup DOM', () => {
document.body.innerHTML = TEMPLATE;
});
it('should exist', () => {
assert.equal(typeof sQuery().isModule, 'function');
assert.equal(typeof sQuery().getModules, 'function');
assert.equal(typeof sQuery().module, 'function');
});
describe('when used without `operator` parameter', () => {
describe('on a single module', () => {
it('should find all specified child modules', () => {
assert(NodeListsAreEqual(
sQuery(document.getElementById('SVRNE')).module('fizz'),
document.querySelectorAll('#HH156, #A0BG9, #ZSAE6, #N1WY1')
));
});
});
describe('on multiple modules', () => {
it('should find all specified child modules', () => {
assert(NodeListsAreEqual(
sQuery(document.querySelectorAll('#SVRNE, #HY7S3')).module('fizz'),
document.querySelectorAll('#HH156, #A0BG9, #ZSAE6, #N1WY1')
));
});
});
});
describe('when used with `is` operator', () => {
it('should determine if element is the specified module', () => {
assert(sQuery(document.getElementById('SVRNE')).module('foo', 'is'));
assert(sQuery(document.getElementById('HH156')).module('fizz', 'is'));
assert(!sQuery(document.getElementById('SVRNE')).module('fizz', 'is'));
assert(!sQuery(document.getElementById('HH156')).module('foo', 'is'));
});
});
describe('when used with a callback operator', () => {
beforeEach('setup DOM', () => {
EL = document.getElementById('SVRNE');
sQuery().module(EL, 'fizz', node => node.className = 'success');
});
it('should execute the callback on each node', () => {
assert(document.getElementById('HH156').className = 'success');
assert(document.getElementById('A0BG9').className = 'success');
});
});
});