@unito/integration-sdk
Version:
Integration SDK
58 lines (57 loc) • 2.43 kB
JavaScript
import { FieldValueTypes, OperatorTypes, Semantics } from '@unito/integration-api';
import assert from 'node:assert/strict';
import { describe, it } from 'node:test';
import { getApplicableFilters } from '../src/helpers.js';
describe('Helpers', () => {
describe('getApplicableFilters', () => {
it('returns only filters for defined fields', () => {
const actual = getApplicableFilters({
filters: [
{ field: 'status', operator: OperatorTypes.EQUAL, values: ['active', 'pending'] },
{ field: 'email', operator: OperatorTypes.IS_NOT_NULL, values: [] },
],
}, [
{
name: 'status',
label: 'Status',
type: FieldValueTypes.STRING,
},
]);
const expected = [{ field: 'status', operator: OperatorTypes.EQUAL, values: ['active', 'pending'] }];
assert.deepEqual(actual, expected);
});
it('translates semantics into field names', () => {
const actual = getApplicableFilters({
filters: [
{ field: 'semantic:displayName', operator: OperatorTypes.START_WITH, values: ['Bob'] },
{ field: 'semantic:createdAt', operator: OperatorTypes.EQUAL, values: ['2021-01-01'] },
],
}, [
{
name: 'name',
label: 'Name',
type: FieldValueTypes.STRING,
semantic: Semantics.DISPLAY_NAME,
},
]);
const expected = [{ field: 'name', operator: OperatorTypes.START_WITH, values: ['Bob'] }];
assert.deepEqual(actual, expected);
});
it('gracefully handle garbage', () => {
const actual = getApplicableFilters({
filters: [
{ field: '...', operator: OperatorTypes.EQUAL, values: [] },
{ field: ':', operator: OperatorTypes.EQUAL, values: [] },
{ field: '', operator: OperatorTypes.EQUAL, values: [] },
],
}, [
{
name: 'status',
label: 'Status',
type: FieldValueTypes.STRING,
},
]);
assert.deepEqual(actual, []);
});
});
});