UNPKG

@unito/integration-sdk

Version:

Integration SDK

43 lines (42 loc) 1.68 kB
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: [], }); }); });