chowdown
Version:
A JavaScript library that allows for the quick transformation of DOM documents into useful formats.
69 lines (48 loc) • 1.65 kB
JavaScript
const helper = require('../helper');
const { cloneDeep, assignIn } = require('lodash');
const Query = require('../../src/query');
const sandbox = sinon.sandbox.create();
describe('object query', () => {
afterEach(() => sandbox.verifyAndRestore());
it('Creates subqueries', () => {
let factory = sandbox.spy(Query, 'factory');
let query = Query.factory.object({
a: 'a',
b: 'b'
});
assert(factory.withArgs('a').calledOnce);
assert(factory.withArgs('b').calledOnce);
});
it('Executes subqueries correctly', () => {
let subQueryOne = Query.factory();
let subQueryTwo = Query.factory();
let factory = sandbox.stub(Query, 'factory');
factory.withArgs('a').returns(subQueryOne);
factory.withArgs('b').returns(subQueryTwo);
sandbox.mock(subQueryOne).expects('on').once().withArgs('document');
sandbox.mock(subQueryTwo).expects('on').once().withArgs('document');
let query = Query.factory.object({
a: 'a',
b: 'b'
});
return query.on('document');
});
it('Constructs an object correctly', () => {
let subQueryOne = Query.factory();
let subQueryTwo = Query.factory();
let factory = sandbox.stub(Query, 'factory');
factory.withArgs('a').returns(subQueryOne);
factory.withArgs('b').returns(subQueryTwo);
sandbox.stub(subQueryOne, 'on').returns('a_res');
sandbox.stub(subQueryTwo, 'on').returns('b_res');
let query = Query.factory.object({
a: 'a',
b: 'b'
});
return query.on('document')
.then(result => expect(result).to.eql({
a: 'a_res',
b: 'b_res'
}));
});
});