Skip to content

Commit 965de2b

Browse files
committed
test(filtering): added tests for filtering expressions tree bindings #6289
1 parent b757941 commit 965de2b

File tree

3 files changed

+136
-4
lines changed

3 files changed

+136
-4
lines changed

projects/igniteui-angular/src/lib/grids/grid/grid-filtering-advanced.spec.ts

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ import { FilteringExpressionsTree } from '../../data-operations/filtering-expres
1414
import { FilteringLogic } from '../../data-operations/filtering-expression.interface';
1515
import {
1616
IgxGridAdvancedFilteringColumnGroupComponent,
17-
IgxGridAdvancedFilteringComponent
17+
IgxGridAdvancedFilteringComponent,
18+
IgxGridAdvancedFilteringBindingComponent
1819
} from '../../test-utils/grid-samples.spec';
1920

2021
const ADVANCED_FILTERING_OPERATOR_LINE_AND_CSS_CLASS = 'igx-filter-tree__line--and';
@@ -28,7 +29,8 @@ describe('IgxGrid - Advanced Filtering', () => {
2829
TestBed.configureTestingModule({
2930
declarations: [
3031
IgxGridAdvancedFilteringColumnGroupComponent,
31-
IgxGridAdvancedFilteringComponent
32+
IgxGridAdvancedFilteringComponent,
33+
IgxGridAdvancedFilteringBindingComponent
3234
],
3335
imports: [
3436
NoopAnimationsModule,
@@ -2692,8 +2694,42 @@ describe('IgxGrid - Advanced Filtering', () => {
26922694
expect(expectedValues).toEqual(dropdownValues);
26932695
}));
26942696
});
2695-
});
26962697

2698+
describe('IgxGrid - Advanced filtering expression tree bindings #grid', () => {
2699+
let fix, grid: IgxGridComponent;
2700+
2701+
beforeEach(fakeAsync(() => {
2702+
fix = TestBed.createComponent(IgxGridAdvancedFilteringBindingComponent);
2703+
grid = fix.componentInstance.grid;
2704+
fix.detectChanges();
2705+
}));
2706+
2707+
it('should correctly filter with \'advancedFilteringExpressionsTree\' binding', fakeAsync(() => {
2708+
// Verify initially filtered in Advanced Filtering - 'Downloads > 200'
2709+
expect(grid.filteredData.length).toEqual(3);
2710+
expect(grid.rowList.length).toBe(3);
2711+
2712+
// Open Advanced Filtering dialog
2713+
GridFunctions.clickAdvancedFilteringButton(fix);
2714+
fix.detectChanges();
2715+
2716+
// Verify the content of the first child (expression) of the root group.
2717+
verifyExpressionChipContent(fix, [0], 'Downloads', 'Greater Than', '200');
2718+
2719+
// Clear the filters
2720+
GridFunctions.clickAdvancedFilteringClearFilterButton(fix);
2721+
fix.detectChanges();
2722+
2723+
// Close the dialog
2724+
GridFunctions.clickAdvancedFilteringApplyButton(fix);
2725+
fix.detectChanges();
2726+
2727+
// Verify no filtered data
2728+
expect(grid.filteredData).toBe(null);
2729+
expect(grid.rowList.length).toBe(8);
2730+
}));
2731+
});
2732+
});
26972733

26982734
function selectColumnInEditModeExpression(fix, dropdownItemIndex: number) {
26992735
GridFunctions.clickAdvancedFilteringColumnSelect(fix);

projects/igniteui-angular/src/lib/grids/grid/grid-filtering.spec.ts

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { IgxStringFilteringOperand,
1414
import { FilteringExpressionsTree } from '../../data-operations/filtering-expressions-tree';
1515
import { SampleTestData } from '../../test-utils/sample-test-data.spec';
1616
import { GridFunctions, GridSummaryFunctions } from '../../test-utils/grid-functions.spec';
17-
import { IgxGridFilteringComponent, CustomFilter } from '../../test-utils/grid-samples.spec';
17+
import { IgxGridFilteringComponent, CustomFilter, IgxGridFilteringBindingComponent } from '../../test-utils/grid-samples.spec';
1818
import { ExpressionUI } from '../filtering/grid-filtering.service';
1919

2020
describe('IgxGrid - Filtering actions #grid', () => {
@@ -663,6 +663,42 @@ describe('IgxGrid - Filtering actions #grid', () => {
663663
}));
664664
});
665665

666+
describe('IgxGrid - Filtering expression tree bindings #grid', () => {
667+
configureTestSuite();
668+
beforeEach(async(() => {
669+
TestBed.configureTestingModule({
670+
declarations: [
671+
IgxGridFilteringBindingComponent
672+
],
673+
imports: [
674+
BrowserAnimationsModule,
675+
IgxGridModule]
676+
})
677+
.compileComponents();
678+
}));
679+
680+
let fix, grid;
681+
beforeEach(fakeAsync(() => {
682+
fix = TestBed.createComponent(IgxGridFilteringBindingComponent);
683+
fix.detectChanges();
684+
grid = fix.componentInstance.grid;
685+
}));
686+
687+
it('should correctly filter with \'filteringExpressionsTree\' binding', fakeAsync(() => {
688+
// Verify initially filtered 'Downloads > 200'
689+
expect(grid.rowList.length).toEqual(3);
690+
expect(grid.filteringExpressionsTree.filteringOperands.length).toEqual(1);
691+
692+
// Clear filter
693+
grid.clearFilter('Downloads');
694+
fix.detectChanges();
695+
696+
// Verify no filtered data
697+
expect(grid.rowList.length).toEqual(8);
698+
expect(grid.filteringExpressionsTree.filteringOperands.length).toEqual(0);
699+
}));
700+
});
701+
666702
const expectedResults = [];
667703

668704
// Fill expected results for 'date' filtering conditions based on the current date

projects/igniteui-angular/src/lib/test-utils/grid-samples.spec.ts

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { FilteringExpressionsTree, FilteringLogic, IgxNumberFilteringOperand } from 'igniteui-angular';
12
import { Component, TemplateRef, ViewChild, Input, AfterViewInit, ChangeDetectorRef, QueryList, ViewChildren, OnInit } from '@angular/core';
23
import { IgxGridCellComponent } from '../grids/cell.component';
34
import { IgxDateSummaryOperand, IgxNumberSummaryOperand, IgxSummaryResult } from '../grids/summaries/grid-summary';
@@ -1545,3 +1546,62 @@ export class GridWithUndefinedDataComponent implements OnInit {
15451546
}, 300);
15461547
}
15471548
}
1549+
1550+
@Component({
1551+
template: `
1552+
<igx-grid [data]="data" height="500px" [allowFiltering]='true' [filteringExpressionsTree]="filterTree">
1553+
<igx-column width="100px" [field]="'ID'" [header]="'ID'" [hasSummary]="true" [filterable]="false" [resizable]="resizable">
1554+
</igx-column>
1555+
<igx-column width="100px" [field]="'ProductName'" [filterable]="filterable" [resizable]="resizable" dataType="string"></igx-column>
1556+
<igx-column width="100px" [field]="'Downloads'" [filterable]="filterable" [resizable]="resizable" dataType="number"></igx-column>
1557+
<igx-column width="100px" [field]="'Released'" [filterable]="filterable" [resizable]="resizable" dataType="boolean"></igx-column>
1558+
</igx-grid>`
1559+
})
1560+
export class IgxGridFilteringBindingComponent extends BasicGridComponent implements OnInit {
1561+
public resizable = false;
1562+
public filterable = true;
1563+
filterTree: FilteringExpressionsTree;
1564+
1565+
public data = SampleTestData.excelFilteringData();
1566+
1567+
public ngOnInit(): void {
1568+
this.filterTree = new FilteringExpressionsTree(FilteringLogic.And);
1569+
this.filterTree.filteringOperands = [
1570+
{
1571+
condition: IgxNumberFilteringOperand.instance().condition('greaterThan'),
1572+
fieldName: 'Downloads',
1573+
searchVal: 200
1574+
}
1575+
];
1576+
}
1577+
}
1578+
1579+
@Component({
1580+
template: `
1581+
<igx-grid [data]="data" height="500px" [allowAdvancedFiltering]="true" [showToolbar]="true"
1582+
[advancedFilteringExpressionsTree]="filterTree" >
1583+
<igx-column width="100px" [field]="'ID'" [header]="'ID'" [hasSummary]="true" [filterable]="false" [resizable]="resizable">
1584+
</igx-column>
1585+
<igx-column width="100px" [field]="'ProductName'" [filterable]="filterable" [resizable]="resizable" dataType="string"></igx-column>
1586+
<igx-column width="100px" [field]="'Downloads'" [filterable]="filterable" [resizable]="resizable" dataType="number"></igx-column>
1587+
<igx-column width="100px" [field]="'Released'" [filterable]="filterable" [resizable]="resizable" dataType="boolean"></igx-column>
1588+
</igx-grid>`
1589+
})
1590+
export class IgxGridAdvancedFilteringBindingComponent extends BasicGridComponent implements OnInit {
1591+
public resizable = false;
1592+
public filterable = true;
1593+
filterTree: FilteringExpressionsTree;
1594+
1595+
public data = SampleTestData.excelFilteringData();
1596+
1597+
public ngOnInit(): void {
1598+
this.filterTree = new FilteringExpressionsTree(FilteringLogic.And);
1599+
this.filterTree.filteringOperands = [
1600+
{
1601+
condition: IgxNumberFilteringOperand.instance().condition('greaterThan'),
1602+
fieldName: 'Downloads',
1603+
searchVal: 200
1604+
}
1605+
];
1606+
}
1607+
}

0 commit comments

Comments
 (0)