UNPKG

igniteui-angular-sovn

Version:

Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps

73 lines (70 loc) 2.86 kB
import { DataGenerator } from './test-util/data-generator'; import { FilteringStrategy } from './filtering-strategy'; import { FilteringExpressionsTree } from './filtering-expressions-tree'; import { FilteringLogic } from './filtering-expression.interface'; import { IgxNumberFilteringOperand, IgxStringFilteringOperand, IgxBooleanFilteringOperand } from './filtering-condition'; describe('Unit testing FilteringStrategy', () => { let dataGenerator: DataGenerator; let data: any[]; let fs: FilteringStrategy; beforeEach(() => { dataGenerator = new DataGenerator(); data = dataGenerator.data; fs = new FilteringStrategy(); }); it ('tests `filter`', () => { const expressionTree = new FilteringExpressionsTree(FilteringLogic.And); expressionTree.filteringOperands = [ { condition: IgxNumberFilteringOperand.instance().condition('greaterThan'), fieldName: 'number', searchVal: 1 } ]; const res = fs.filter(data, expressionTree, null, null); expect(dataGenerator.getValuesForColumn(res, 'number')) .toEqual([2, 3, 4]); }); it ('tests `matchRecordByExpressions`', () => { const rec = data[0]; const expressionTree = new FilteringExpressionsTree(FilteringLogic.Or); expressionTree.filteringOperands = [ { condition: IgxStringFilteringOperand.instance().condition('contains'), fieldName: 'string', ignoreCase: false, searchVal: 'ROW' }, { condition: IgxNumberFilteringOperand.instance().condition('lessThan'), fieldName: 'number', searchVal: 1 } ]; const res = fs.matchRecord(rec, expressionTree); expect(res).toBeTruthy(); }); it ('tests `findMatch`', () => { const rec = data[0]; const res = fs.findMatchByExpression(rec, { condition: IgxBooleanFilteringOperand.instance().condition('false'), fieldName: 'boolean' }); expect(res).toBeTruthy(); }); it ('tests default settings', () => { (data[0] as { string: string }).string = 'ROW'; const filterstr = new FilteringStrategy(); const expressionTree = new FilteringExpressionsTree(FilteringLogic.And); expressionTree.filteringOperands = [ { condition: IgxStringFilteringOperand.instance().condition('contains'), fieldName: 'string', searchVal: 'ROW' } ]; const res = filterstr.filter(data, expressionTree, null, null); expect(dataGenerator.getValuesForColumn(res, 'number')) .toEqual([0]); }); });