@unito/integration-sdk
Version:
Integration SDK
43 lines (42 loc) • 1.68 kB
JavaScript
import { OperatorTypes } from '@unito/integration-api';
import assert from 'node:assert/strict';
import { describe, it } from 'node:test';
import extractFilters from '../../src/middlewares/filters.js';
describe('filters middleware', () => {
it('properly parse operators', () => {
Object.values(OperatorTypes).forEach(operator => {
const request = {
query: { filter: `aKey${operator}value` },
};
const response = { locals: {} };
extractFilters(request, response, () => { });
assert.deepEqual(response.locals, {
filters: [{ field: 'aKey', operator, values: ['value'] }],
});
});
const request = {
query: { filter: `aKey!!` },
};
const response = { locals: {} };
extractFilters(request, response, () => { });
assert.deepEqual(response.locals, {
filters: [{ field: 'aKey', operator: OperatorTypes.IS_NULL, values: [] }],
});
});
it('decodes URI components', () => {
const request = { query: { filter: 'status=foo%2Cbar%21%21%2C%3Fbaz%3D!%3Equx' } };
const response = { locals: {} };
extractFilters(request, response, () => { });
assert.deepEqual(response.locals, {
filters: [{ field: 'status', operator: OperatorTypes.EQUAL, values: ['foo,bar!!,?baz=!>qux'] }],
});
});
it('no data', () => {
const request = { query: {} };
const response = { locals: {} };
extractFilters(request, response, () => { });
assert.deepEqual(response.locals, {
filters: [],
});
});
});