Skip to content

Commit e7bef73

Browse files
committed
test(filtering): testing two-way binding for filtering expressions tree #6289
1 parent 58cc130 commit e7bef73

File tree

5 files changed

+35
-17
lines changed

5 files changed

+35
-17
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,7 @@ export class IgxFilteringService implements OnDestroy {
510510
return true;
511511
}
512512

513-
let expr: any;
513+
let expr: any;
514514

515515
for (let i = 0; i < expressionTree.filteringOperands.length; i++) {
516516
expr = expressionTree.filteringOperands[i];

projects/igniteui-angular/src/lib/grids/grid-base.component.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,23 @@ export abstract class IgxGridBaseComponent extends DisplayDensityBase implements
411411
@Output()
412412
public filteringExpressionsTreeChange = new EventEmitter<IFilteringExpressionsTree>();
413413

414+
/**
415+
* Emitted after advanced filtering is performed.
416+
* Returns the advanced filtering expressions tree.
417+
* ```typescript
418+
* advancedFilteringExprTreeChange(event: IFilteringExpressionsTree){
419+
* const filteringTree = event;
420+
* }
421+
* ```
422+
* ```html
423+
* <igx-grid #grid [data]="localData" [height]="'305px'" [autoGenerate]="true"
424+
* (advancedFilteringExpressionsTreeChange)="advancedFilteringExprTreeChange($event)"></igx-grid>
425+
* ```
426+
* @memberof IgxGridBaseComponent
427+
*/
428+
@Output()
429+
public advancedFilteringExpressionsTreeChange = new EventEmitter<IFilteringExpressionsTree>();
430+
414431
/**
415432
* Returns the advanced filtering state of `IgxGridComponent`.
416433
* ```typescript
@@ -454,6 +471,7 @@ export abstract class IgxGridBaseComponent extends DisplayDensityBase implements
454471
} else {
455472
this._advancedFilteringExpressionsTree = null;
456473
}
474+
this.advancedFilteringExpressionsTreeChange.emit(this._advancedFilteringExpressionsTree);
457475

458476
if (this.filteringService.isFilteringExpressionsTreeEmpty(this._advancedFilteringExpressionsTree) &&
459477
!this.advancedFilteringExpressionsTree) {

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

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2697,32 +2697,26 @@ describe('IgxGrid - Advanced Filtering', () => {
26972697

26982698
describe('IgxGrid - Advanced filtering expression tree bindings #grid', () => {
26992699
let fix, grid: IgxGridComponent;
2700-
27012700
beforeEach(fakeAsync(() => {
27022701
fix = TestBed.createComponent(IgxGridAdvancedFilteringBindingComponent);
2703-
grid = fix.componentInstance.grid;
27042702
fix.detectChanges();
2703+
grid = fix.componentInstance.grid;
27052704
}));
27062705

27072706
it('should correctly filter with \'advancedFilteringExpressionsTree\' binding', fakeAsync(() => {
27082707
// Verify initially filtered in Advanced Filtering - 'Downloads > 200'
27092708
expect(grid.filteredData.length).toEqual(3);
27102709
expect(grid.rowList.length).toBe(3);
27112710

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');
2711+
// Verify filtering expressions tree binding state
2712+
expect(grid.advancedFilteringExpressionsTree).toBe(fix.componentInstance.filterTree);
27182713

2719-
// Clear the filters
2720-
GridFunctions.clickAdvancedFilteringClearFilterButton(fix);
2714+
// Clear filter
2715+
grid.advancedFilteringExpressionsTree = null;
27212716
fix.detectChanges();
27222717

2723-
// Close the dialog
2724-
GridFunctions.clickAdvancedFilteringApplyButton(fix);
2725-
fix.detectChanges();
2718+
// Verify filtering expressions tree binding state
2719+
expect(grid.advancedFilteringExpressionsTree).toBe(fix.componentInstance.filterTree);
27262720

27272721
// Verify no filtered data
27282722
expect(grid.filteredData).toBe(null);

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -677,7 +677,7 @@ describe('IgxGrid - Filtering expression tree bindings #grid', () => {
677677
.compileComponents();
678678
}));
679679

680-
let fix, grid;
680+
let fix, grid: IgxGridComponent;
681681
beforeEach(fakeAsync(() => {
682682
fix = TestBed.createComponent(IgxGridFilteringBindingComponent);
683683
fix.detectChanges();
@@ -689,10 +689,16 @@ describe('IgxGrid - Filtering expression tree bindings #grid', () => {
689689
expect(grid.rowList.length).toEqual(3);
690690
expect(grid.filteringExpressionsTree.filteringOperands.length).toEqual(1);
691691

692+
// Verify filtering expressions tree binding state
693+
expect(grid.filteringExpressionsTree).toBe(fix.componentInstance.filterTree);
694+
692695
// Clear filter
693696
grid.clearFilter('Downloads');
694697
fix.detectChanges();
695698

699+
// Verify filtering expressions tree binding state
700+
expect(grid.filteringExpressionsTree).toBe(fix.componentInstance.filterTree);
701+
696702
// Verify no filtered data
697703
expect(grid.rowList.length).toEqual(8);
698704
expect(grid.filteringExpressionsTree.filteringOperands.length).toEqual(0);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1549,7 +1549,7 @@ export class GridWithUndefinedDataComponent implements OnInit {
15491549

15501550
@Component({
15511551
template: `
1552-
<igx-grid [data]="data" height="500px" [allowFiltering]='true' [filteringExpressionsTree]="filterTree">
1552+
<igx-grid [data]="data" height="500px" [allowFiltering]='true' [(filteringExpressionsTree)]="filterTree">
15531553
<igx-column width="100px" [field]="'ID'" [header]="'ID'" [hasSummary]="true" [filterable]="false" [resizable]="resizable">
15541554
</igx-column>
15551555
<igx-column width="100px" [field]="'ProductName'" [filterable]="filterable" [resizable]="resizable" dataType="string"></igx-column>
@@ -1579,7 +1579,7 @@ export class IgxGridFilteringBindingComponent extends BasicGridComponent impleme
15791579
@Component({
15801580
template: `
15811581
<igx-grid [data]="data" height="500px" [allowAdvancedFiltering]="true" [showToolbar]="true"
1582-
[advancedFilteringExpressionsTree]="filterTree" >
1582+
[(advancedFilteringExpressionsTree)]="filterTree" >
15831583
<igx-column width="100px" [field]="'ID'" [header]="'ID'" [hasSummary]="true" [filterable]="false" [resizable]="resizable">
15841584
</igx-column>
15851585
<igx-column width="100px" [field]="'ProductName'" [filterable]="filterable" [resizable]="resizable" dataType="string"></igx-column>

0 commit comments

Comments
 (0)