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
text/typescript
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]);
});
});