UNPKG

shaman-website-compiler

Version:

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

98 lines 3.91 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); require("mocha"); var chai_1 = require("chai"); var json_repo_adapter_1 = require("./json-repo.adapter"); var query_model_1 = require("../models/query-model"); describe('JsonRepoAdapter', function () { var adapter; beforeEach(function () { adapter = new MockJsonRepoAdapter(["blog"]); adapter.add('blog', 'blog1', { title: 'blog1', content: 'Blog #1' }); adapter.add('blog', 'blog2', { title: 'blog2', content: 'Blog #2' }); adapter.save(); }); it('run should return all blog objects', function (done) { var query = new query_model_1.QueryModel(); query.path = 'blog'; adapter.run(query).then(function (rslt) { (0, chai_1.expect)(rslt.length).to.equal(2); done(); }); }); it('run should return filtered blog objects', function (done) { var query = new query_model_1.QueryModel(); query.path = 'blog'; query.args = ["title", "blog2"]; adapter.run(query).then(function (rslt) { (0, chai_1.expect)(rslt.length).to.equal(1); done(); }); }); it('run should sort object in ascending order', function (done) { var query = new query_model_1.QueryModel(); query.path = 'blog'; query.sort = { key: 'title' }; adapter.run(query).then(function (rslt) { (0, chai_1.expect)(rslt[0].title).to.equal('blog1'); done(); }); }); it('run should sort object in descending order', function (done) { var query = new query_model_1.QueryModel(); query.path = 'blog'; query.sort = { key: 'title', descending: true }; adapter.run(query).then(function (rslt) { (0, chai_1.expect)(rslt[0].title).to.equal('blog2'); done(); }); }); it('run should limit objects', function (done) { var query = new query_model_1.QueryModel(); query.path = 'blog'; query.limit = 1; adapter.run(query).then(function (rslt) { (0, chai_1.expect)(rslt.length).to.equal(1); done(); }); }); it('run should not limit objects of limit is greater than length', function (done) { var query = new query_model_1.QueryModel(); query.path = 'blog'; query.limit = 3; adapter.run(query).then(function (rslt) { (0, chai_1.expect)(rslt.length).to.equal(2); done(); }); }); }); var MockJsonRepoAdapter = /** @class */ (function (_super) { __extends(MockJsonRepoAdapter, _super); function MockJsonRepoAdapter(models) { var _this = _super.call(this, { dataPath: null, models: models }) || this; _this.add = function (model, key, data) { _this.context.models[model].add(key, data); }; _this.save = function () { return _this.context.saveChanges(); }; return _this; } return MockJsonRepoAdapter; }(json_repo_adapter_1.JsonRepoAdapter)); //# sourceMappingURL=json-repo.adapter.spec.js.map