shaman-website-compiler
Version:
Compile raw HTML, CSS and Javascript into the smallest possible, SEO friendly website.
76 lines • 3.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
require("mocha");
var sinon = require("sinon");
var chai_1 = require("chai");
var query_model_1 = require("../models/query-model");
var mongo_adapter_1 = require("./mongo.adapter");
describe('MongoAdapter', function () {
var sandbox = sinon.createSandbox();
afterEach(function () {
sandbox.restore();
});
it('run should return a single object', function (done) {
var subject = new mongo_adapter_1.MongoAdapter({ mongoUri: '', options: {} });
var collection = function (_) { return ({ find: function (_) { return ({ toArray: function () { return ([{}]); } }); } }); };
subject.client = { collection: collection };
sandbox.stub(subject, 'openConnection').returns(Promise.resolve());
subject.run(new query_model_1.QueryModel()).then(function (result) {
(0, chai_1.expect)(result.length).to.equal(1);
done();
});
});
it('run should sort objects in ascending order', function (done) {
var subject = new mongo_adapter_1.MongoAdapter({ mongoUri: '', options: {} });
var result = [{ "title": "a" }, { "title": "b" }];
var collection = function (_) { return ({ find: function (_) { return ({ toArray: function () { return (result); } }); } }); };
subject.client = { collection: collection };
sandbox.stub(subject, 'openConnection').returns(Promise.resolve());
var query = new query_model_1.QueryModel();
query.sort = { key: 'title' };
subject.run(query).then(function (result) {
(0, chai_1.expect)(result[0].title).to.equal('a');
done();
});
});
it('run should sort objects in descending order', function (done) {
var subject = new mongo_adapter_1.MongoAdapter({ mongoUri: '', options: {} });
var result = [{ "title": "a" }, { "title": "b" }];
var collection = function (_) { return ({ find: function (_) { return ({ toArray: function () { return (result); } }); } }); };
subject.client = { collection: collection };
sandbox.stub(subject, 'openConnection').returns(Promise.resolve());
var query = new query_model_1.QueryModel();
query.sort = { key: 'title', descending: true };
subject.run(query).then(function (result) {
(0, chai_1.expect)(result[0].title).to.equal('b');
done();
});
});
it('run should limit result length', function (done) {
var subject = new mongo_adapter_1.MongoAdapter({ mongoUri: '', options: {} });
var result = [{ "title": "a" }, { "title": "b" }];
var collection = function (_) { return ({ find: function (_) { return ({ toArray: function () { return (result); } }); } }); };
subject.client = { collection: collection };
sandbox.stub(subject, 'openConnection').returns(Promise.resolve());
var query = new query_model_1.QueryModel();
query.limit = 1;
subject.run(query).then(function (result) {
(0, chai_1.expect)(result.length).to.equal(1);
done();
});
});
it('run should not limit results if limit is greater than length', function (done) {
var subject = new mongo_adapter_1.MongoAdapter({ mongoUri: '', options: {} });
var result = [{ "title": "a" }, { "title": "b" }];
var collection = function (_) { return ({ find: function (_) { return ({ toArray: function () { return (result); } }); } }); };
subject.client = { collection: collection };
sandbox.stub(subject, 'openConnection').returns(Promise.resolve());
var query = new query_model_1.QueryModel();
query.limit = 3;
subject.run(query).then(function (result) {
(0, chai_1.expect)(result.length).to.equal(2);
done();
});
});
});
//# sourceMappingURL=mongo.adapter.spec.js.map