UNPKG

@unito/integration-sdk

Version:

Integration SDK

58 lines (57 loc) 2.43 kB
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, []); }); }); });