api-core
Version:
Model-based dynamic multi-level APIs for any provider, plus multiple consumption channels
93 lines (77 loc) • 3.69 kB
text/typescript
import {ApiEdgeQueryContext} from "../src/edge/ApiEdgeQueryContext";
import {ApiEdgeQueryFilterType, ApiEdgeQueryFilter} from "../src/edge/ApiEdgeQueryFilter";
const tap = require('tap');
tap.test('constructing with id should work', (t: any) => {
let context = new ApiEdgeQueryContext('test');
t.equal(context.id, 'test');
t.end()
});
tap.test('adding fields should work', (t: any) => {
let context = new ApiEdgeQueryContext();
context.field('test');
t.same(context.fields, [ 'test' ]);
context.field('test2');
t.same(context.fields, [ 'test', 'test2' ]);
t.end()
});
//TODO: Rewrite test with populatedRelations.
/*tap.test('adding populated fields should work', (t: any) => {
let context = new ApiEdgeQueryContext();
context.populate('test');
t.same(context.populatedFields, [ 'test' ]);
context.populate('test2');
t.same(context.populatedFields, [ 'test', 'test2' ]);
t.end()
});*/
tap.test('pagination should work', (t: any) => {
let context = new 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: any) => {
let context = new 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: any) => {
let context = new ApiEdgeQueryContext();
context.filter('test', ApiEdgeQueryFilterType.Equals, 10);
t.equal(JSON.stringify(context.filters), JSON.stringify([ new ApiEdgeQueryFilter('test', ApiEdgeQueryFilterType.Equals, 10) ]));
context.filter('test2', ApiEdgeQueryFilterType.Equals, '20');
t.equal(JSON.stringify(context.filters), JSON.stringify([
new ApiEdgeQueryFilter('test', ApiEdgeQueryFilterType.Equals, 10),
new ApiEdgeQueryFilter('test2', ApiEdgeQueryFilterType.Equals, '20')
]));
context.filters = [];
context.filter('test', ApiEdgeQueryFilterType.NotEquals, 10);
t.equal(JSON.stringify(context.filters), JSON.stringify([ new ApiEdgeQueryFilter('test', ApiEdgeQueryFilterType.NotEquals, 10) ]));
context.filters = [];
context.filter('test', ApiEdgeQueryFilterType.GreaterThan, 10);
t.equal(JSON.stringify(context.filters), JSON.stringify([ new ApiEdgeQueryFilter('test', ApiEdgeQueryFilterType.GreaterThan, 10) ]));
context.filters = [];
context.filter('test', ApiEdgeQueryFilterType.LowerThan, 10);
t.equal(JSON.stringify(context.filters), JSON.stringify([ new ApiEdgeQueryFilter('test', ApiEdgeQueryFilterType.LowerThan, 10) ]));
context.filters = [];
context.filter('test', ApiEdgeQueryFilterType.GreaterThanOrEquals, 10);
t.equal(JSON.stringify(context.filters), JSON.stringify([ new ApiEdgeQueryFilter('test', ApiEdgeQueryFilterType.GreaterThanOrEquals, 10) ]));
context.filters = [];
context.filter('test', ApiEdgeQueryFilterType.LowerThanOrEquals, 10);
t.equal(JSON.stringify(context.filters), JSON.stringify([ new ApiEdgeQueryFilter('test', ApiEdgeQueryFilterType.LowerThanOrEquals, 10) ]));
context.filters = [];
t.end()
});
tap.test('cloning should work', (t: any) => {
let context = new ApiEdgeQueryContext('test');
context.sort('test', true);
context.filter('test', ApiEdgeQueryFilterType.NotEquals, 10);
context.paginate(10, 20);
context.field('test');
let clonedContext = context.clone();
t.equal(JSON.stringify(clonedContext), JSON.stringify(context));
t.end()
});