UNPKG

shaman-website-compiler

Version:

Compile raw HTML, CSS and Javascript into the smallest possible, SEO friendly website.

76 lines 3.94 kB
"use strict"; 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