Skip to content

Commit 73acfb2

Browse files
committed
test(esf): add load on demand test #5448
1 parent 15d4b58 commit 73acfb2

File tree

5 files changed

+73
-7
lines changed

5 files changed

+73
-7
lines changed

projects/igniteui-angular/src/lib/grids/filtering/excel-style/excel-style-search.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
</div>
3939

4040
<ng-template igxDataLoading>
41-
<div style="display: flex; align-items: center;" class="esf-loading-indicator">
41+
<div class="igx-excel-filter-loading">
4242
<ng-container *ngTemplateOutlet="valuesLoadingTemplate">
4343
</ng-container>
4444
</div>

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

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ import {
4141
IgxGridFilteringMCHComponent,
4242
IgxTestExcelFilteringDatePickerComponent,
4343
IgxGridFilteringTemplateComponent,
44-
IgxGridFilteringESFTemplatesComponent
44+
IgxGridFilteringESFTemplatesComponent,
45+
IgxGridFilteringESFLoadOnDemandComponent
4546
} from '../../test-utils/grid-samples.spec';
4647

4748
const FILTER_UI_ROW = 'igx-grid-filtering-row';
@@ -3504,7 +3505,8 @@ describe('IgxGrid - Filtering actions - Excel style filtering', () => {
35043505
declarations: [
35053506
IgxGridFilteringComponent,
35063507
IgxTestExcelFilteringDatePickerComponent,
3507-
IgxGridFilteringESFTemplatesComponent
3508+
IgxGridFilteringESFTemplatesComponent,
3509+
IgxGridFilteringESFLoadOnDemandComponent
35083510
],
35093511
imports: [
35103512
NoopAnimationsModule,
@@ -5578,6 +5580,38 @@ describe('IgxGrid - Filtering actions - Excel style filtering', () => {
55785580
// expect(datePicker.componentInstance.templateDropDownTarget).toBeTruthy();
55795581
}));
55805582
});
5583+
5584+
describe('Load values on demand', () => {
5585+
let fix, grid;
5586+
beforeEach(fakeAsync(() => {
5587+
fix = TestBed.createComponent(IgxGridFilteringESFLoadOnDemandComponent);
5588+
grid = fix.componentInstance.grid;
5589+
fix.detectChanges();
5590+
}));
5591+
5592+
fit('TEST', fakeAsync(() => {
5593+
// Open excel style custom filtering dialog and wait a bit.
5594+
GridFunctions.clickExcelFilterIcon(fix, 'ProductName');
5595+
fix.detectChanges();
5596+
tick(400);
5597+
5598+
// Verify items in search have not loaded yet and that the loading indicator is visible.
5599+
const searchComponent = GridFunctions.getExcelStyleSearchComponent(fix);
5600+
let listItems = searchComponent.querySelectorAll('igx-list-item');
5601+
expect(listItems.length).toBe(0, 'incorrect rendered list items count');
5602+
let loadingIndicator = GridFunctions.getExcelFilteringLoadingIndicator(fix);
5603+
expect(loadingIndicator).not.toBeNull('esf loading indicator is not visible');
5604+
5605+
// Wait for items to load.
5606+
tick(650);
5607+
5608+
// Verify items in search have loaded and that the loading indicator is not visible.
5609+
listItems = searchComponent.querySelectorAll('igx-list-item');
5610+
expect(listItems.length).toBe(6, 'incorrect rendered list items count');
5611+
loadingIndicator = GridFunctions.getExcelFilteringLoadingIndicator(fix);
5612+
expect(loadingIndicator).toBeNull('esf loading indicator is visible');
5613+
}));
5614+
});
55815615
});
55825616

55835617
const expectedResults = [];

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -744,6 +744,12 @@ export class GridFunctions {
744744
return excelMenu.querySelector('igx-excel-style-column-moving');
745745
}
746746

747+
public static getExcelFilteringLoadingIndicator(fix: ComponentFixture<any>) {
748+
const searchComponent = GridFunctions.getExcelStyleSearchComponent(fix);
749+
const loadingIndicator = searchComponent.querySelector('.igx-excel-filter-loading');
750+
return loadingIndicator;
751+
}
752+
747753
public static getColumnCells(fix, columnKey) {
748754
const allCells = fix.debugElement.queryAll(By.css('igx-grid-cell'));
749755
return allCells.filter((cell) => cell.componentInstance.column.field === columnKey);

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import { IgxColumnComponent } from '../grids/column.component';
1111
import { IgxTransactionService } from '../services';
1212
import { IgxFilteringOperand } from '../data-operations/filtering-condition';
1313
import { ExpressionUI } from '../grids/filtering/grid-filtering.service';
14+
import { IFilteringExpressionsTree } from '../data-operations/filtering-expressions-tree';
15+
import { FilteringStrategy } from '../data-operations/filtering-strategy';
1416

1517
@Component({
1618
template: `<div style="width: 800px; height: 600px;">
@@ -933,6 +935,32 @@ export class IgxGridFilteringComponent extends BasicGridComponent {
933935
}
934936
}
935937

938+
@Component({
939+
template: `<igx-grid [data]="data" height="500px" [allowFiltering]='true'
940+
[filterMode]="'excelStyleFilter'" [uniqueColumnValuesStrategy]="columnValuesStrategy">
941+
<igx-column width="100px" [field]="'ID'"></igx-column>
942+
<igx-column width="100px" [field]="'ProductName'" dataType="string"></igx-column>
943+
<igx-column width="100px" [field]="'Downloads'" dataType="number"></igx-column>
944+
<igx-column width="100px" [field]="'Released'" dataType="boolean"></igx-column>
945+
<igx-column width="100px" [field]="'ReleaseDate'" dataType="date">
946+
</igx-column>
947+
</igx-grid>`
948+
})
949+
export class IgxGridFilteringESFLoadOnDemandComponent extends BasicGridComponent {
950+
private _filteringStrategy = new FilteringStrategy();
951+
public data = SampleTestData.excelFilteringData();
952+
953+
public columnValuesStrategy = (column: IgxColumnComponent,
954+
columnExprTree: IFilteringExpressionsTree,
955+
done: (uniqueValues: any[]) => void) => {
956+
setTimeout(() => {
957+
const filteredData = this._filteringStrategy.filter(this.data, columnExprTree);
958+
const columnValues = filteredData.map(record => record[column.field]);
959+
done(columnValues);
960+
}, 1000);
961+
}
962+
}
963+
936964
@Component({
937965
template: `<igx-grid [data]="data" height="500px" [allowFiltering]='true' [filterMode]="'excelStyleFilter'">
938966
<igx-column width="100px" [field]="'ID'" [header]="'ID'" [hasSummary]="true"

src/app/grid-esf-load-on-demand/grid-esf-load-on-demand.component.html

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,8 @@
1010
</div>
1111
<igx-grid #grid1 [data]="data" [width]="'900px'" [height]="'800px'" [displayDensity]="density"
1212
[showToolbar]="true" [columnHiding]="true" [allowFiltering]="true" [rowSelectable]="true"
13-
[filterMode]="'excelStyleFilter'"
14-
15-
[uniqueColumnValuesStrategy]="columnValuesStrategy"
16-
>
13+
[filterMode]="'excelStyleFilter'"
14+
[uniqueColumnValuesStrategy]="columnValuesStrategy">
1715

1816
<igx-column [field]="'ID'" [filterable]="true" [sortable]="true" [movable]="true" [dataType]="'string'"></igx-column>
1917
<igx-column [field]="'CompanyName'" [filterable]="true" [sortable]="true" [movable]="true" [dataType]="'string'"></igx-column>

0 commit comments

Comments
 (0)