shaman-website-compiler
Version:
Compile raw HTML, CSS and Javascript into the smallest possible, SEO friendly website.
98 lines • 3.91 kB
JavaScript
;
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