api-core
Version:
Model-based dynamic multi-level APIs for any provider, plus multiple consumption channels
71 lines • 4.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const ApiEdgeQueryContext_1 = require("../src/edge/ApiEdgeQueryContext");
const ApiEdgeQueryFilter_1 = require("../src/edge/ApiEdgeQueryFilter");
const tap = require('tap');
tap.test('constructing with id should work', (t) => {
let context = new ApiEdgeQueryContext_1.ApiEdgeQueryContext('test');
t.equal(context.id, 'test');
t.end();
});
tap.test('adding fields should work', (t) => {
let context = new ApiEdgeQueryContext_1.ApiEdgeQueryContext();
context.field('test');
t.same(context.fields, ['test']);
context.field('test2');
t.same(context.fields, ['test', 'test2']);
t.end();
});
tap.test('pagination should work', (t) => {
let context = new ApiEdgeQueryContext_1.ApiEdgeQueryContext();
t.notOk(context.pagination);
context.paginate(10, 20);
t.equal(JSON.stringify(context.pagination), JSON.stringify({ skip: 10, limit: 20 }));
t.end();
});
tap.test('sorting should work', (t) => {
let context = new ApiEdgeQueryContext_1.ApiEdgeQueryContext();
context.sort('test', true);
t.same(context.sortBy, [['test', 1]]);
context.sort('test2', false);
t.same(context.sortBy, [['test', 1], ['test2', -1]]);
t.end();
});
tap.test('adding filters should work', (t) => {
let context = new ApiEdgeQueryContext_1.ApiEdgeQueryContext();
context.filter('test', ApiEdgeQueryFilter_1.ApiEdgeQueryFilterType.Equals, 10);
t.equal(JSON.stringify(context.filters), JSON.stringify([new ApiEdgeQueryFilter_1.ApiEdgeQueryFilter('test', ApiEdgeQueryFilter_1.ApiEdgeQueryFilterType.Equals, 10)]));
context.filter('test2', ApiEdgeQueryFilter_1.ApiEdgeQueryFilterType.Equals, '20');
t.equal(JSON.stringify(context.filters), JSON.stringify([
new ApiEdgeQueryFilter_1.ApiEdgeQueryFilter('test', ApiEdgeQueryFilter_1.ApiEdgeQueryFilterType.Equals, 10),
new ApiEdgeQueryFilter_1.ApiEdgeQueryFilter('test2', ApiEdgeQueryFilter_1.ApiEdgeQueryFilterType.Equals, '20')
]));
context.filters = [];
context.filter('test', ApiEdgeQueryFilter_1.ApiEdgeQueryFilterType.NotEquals, 10);
t.equal(JSON.stringify(context.filters), JSON.stringify([new ApiEdgeQueryFilter_1.ApiEdgeQueryFilter('test', ApiEdgeQueryFilter_1.ApiEdgeQueryFilterType.NotEquals, 10)]));
context.filters = [];
context.filter('test', ApiEdgeQueryFilter_1.ApiEdgeQueryFilterType.GreaterThan, 10);
t.equal(JSON.stringify(context.filters), JSON.stringify([new ApiEdgeQueryFilter_1.ApiEdgeQueryFilter('test', ApiEdgeQueryFilter_1.ApiEdgeQueryFilterType.GreaterThan, 10)]));
context.filters = [];
context.filter('test', ApiEdgeQueryFilter_1.ApiEdgeQueryFilterType.LowerThan, 10);
t.equal(JSON.stringify(context.filters), JSON.stringify([new ApiEdgeQueryFilter_1.ApiEdgeQueryFilter('test', ApiEdgeQueryFilter_1.ApiEdgeQueryFilterType.LowerThan, 10)]));
context.filters = [];
context.filter('test', ApiEdgeQueryFilter_1.ApiEdgeQueryFilterType.GreaterThanOrEquals, 10);
t.equal(JSON.stringify(context.filters), JSON.stringify([new ApiEdgeQueryFilter_1.ApiEdgeQueryFilter('test', ApiEdgeQueryFilter_1.ApiEdgeQueryFilterType.GreaterThanOrEquals, 10)]));
context.filters = [];
context.filter('test', ApiEdgeQueryFilter_1.ApiEdgeQueryFilterType.LowerThanOrEquals, 10);
t.equal(JSON.stringify(context.filters), JSON.stringify([new ApiEdgeQueryFilter_1.ApiEdgeQueryFilter('test', ApiEdgeQueryFilter_1.ApiEdgeQueryFilterType.LowerThanOrEquals, 10)]));
context.filters = [];
t.end();
});
tap.test('cloning should work', (t) => {
let context = new ApiEdgeQueryContext_1.ApiEdgeQueryContext('test');
context.sort('test', true);
context.filter('test', ApiEdgeQueryFilter_1.ApiEdgeQueryFilterType.NotEquals, 10);
context.paginate(10, 20);
context.field('test');
let clonedContext = context.clone();
t.equal(JSON.stringify(clonedContext), JSON.stringify(context));
t.end();
});
//# sourceMappingURL=query-context.js.map