Skip to content

Commit 686db70

Browse files
committed
fix(state): should not return excluded feats #7025
1 parent 4811a3f commit 686db70

File tree

4 files changed

+44
-27
lines changed

4 files changed

+44
-27
lines changed

projects/igniteui-angular/src/lib/grids/state.directive.spec.ts

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -137,20 +137,14 @@ describe('IgxGridState - input properties #grid', () => {
137137
const fix = TestBed.createComponent(IgxGridStateWithOptionsComponent);
138138
fix.detectChanges();
139139
const state = fix.componentInstance.state;
140-
const grid = fix.componentInstance.grid;
141-
const pagingState = grid.pagingState;
142-
const filtering = grid.filteringExpressionsTree;
143-
const sorting = grid.sortingExpressions;
144140

145141
let gridState = state.getState(false) as IGridState;
146-
HelperFunctions.verifyFilteringExpressions(filtering, gridState);
147-
HelperFunctions.verifySortingExpressions(sorting, gridState);
148-
HelperFunctions.verifyPaging(pagingState, gridState);
142+
expect(gridState['sorting']).toBeFalsy();
143+
expect(gridState['groupBy']).toBeFalsy();
149144

150-
gridState = state.getState(false, ['filtering', 'sorting', 'paging']) as IGridState;
151-
HelperFunctions.verifyFilteringExpressions(filtering, gridState);
152-
HelperFunctions.verifySortingExpressions(sorting, gridState);
153-
HelperFunctions.verifyPaging(pagingState, gridState);
145+
gridState = state.getState(false, ['filtering', 'sorting', 'groupBy']) as IGridState;
146+
expect(gridState['sorting']).toBeFalsy();
147+
expect(gridState['groupBy']).toBeFalsy();
154148
});
155149

156150
it('getState should return corect filtering state', () => {

projects/igniteui-angular/src/lib/grids/state.directive.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -222,13 +222,15 @@ export class IgxGridStateDirective {
222222
this.applyFeatures(keys);
223223
let gridState = {} as IGridState;
224224
this.features.forEach(f => {
225-
f = f === 'inheritance' ? GridFeatures.ROW_ISLANDS : f;
226-
if (!(this.grid instanceof IgxGridComponent) && f === FlatGridFeatures.GROUP_BY) {
227-
return;
225+
if (this.options[f]) {
226+
f = f === 'inheritance' ? GridFeatures.ROW_ISLANDS : f;
227+
if (!(this.grid instanceof IgxGridComponent) && f === FlatGridFeatures.GROUP_BY) {
228+
return;
229+
}
230+
const feature = this.getFeature(f);
231+
const featureState: IGridState = feature.getFeatureState(this);
232+
gridState = Object.assign(gridState, featureState);
228233
}
229-
const feature = this.getFeature(f);
230-
const featureState: IGridState = feature.getFeatureState(this);
231-
gridState = Object.assign(gridState, featureState);
232234
});
233235
return gridState;
234236
}

projects/igniteui-angular/src/lib/grids/state.hierarchicalgrid.spec.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -132,24 +132,27 @@ describe('IgxHierarchicalGridState - input properties #hGrid', () => {
132132
fix.detectChanges();
133133
const state = fix.componentInstance.state;
134134
grid = fix.componentInstance.hgrid;
135-
const filtering = grid.filteringExpressionsTree;
136-
const sorting = grid.sortingExpressions;
137135

138136
const optionsInput = {
139-
filtering: false,
140-
advancedFiltering: true,
137+
paging: false,
141138
sorting: false
142139
};
143140

144141
state.options = optionsInput;
145142

146143
let gridState = state.getState(false) as IGridState;
147-
HelperFunctions.verifyFilteringExpressions(filtering, gridState);
148-
HelperFunctions.verifySortingExpressions(sorting, gridState);
144+
expect(gridState['sorting']).toBeFalsy();
145+
expect(gridState['paging']).toBeFalsy();
149146

150-
gridState = state.getState(false, ['filtering', 'sorting']) as IGridState;
151-
HelperFunctions.verifyFilteringExpressions(filtering, gridState);
152-
HelperFunctions.verifySortingExpressions(sorting, gridState);
147+
const gridsCollection = HelperFunctions.getChildGridsCollection(grid, gridState);
148+
gridsCollection.forEach(childGrid => {
149+
expect(childGrid.state['sorting']).toBeFalsy();
150+
expect(childGrid.state['paging']).toBeFalsy();
151+
});
152+
153+
gridState = state.getState(false, ['filtering', 'sorting', 'paging', 'inheritance']) as IGridState;
154+
expect(gridState['sorting']).toBeFalsy();
155+
expect(gridState['paging']).toBeFalsy();
153156
});
154157

155158
it('getState should return correct filtering state', () => {

projects/igniteui-angular/src/lib/grids/state.treegrid.spec.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,25 @@ describe('IgxTreeGridState - input properties #tGrid', () => {
5757
expect(state.options).toEqual(jasmine.objectContaining(defaultOptions));
5858
});
5959

60+
it('getState should return corect IGridState object when options are not default', () => {
61+
const options = {
62+
sorting: false,
63+
paging: false
64+
};
65+
fix.detectChanges();
66+
const state = fix.componentInstance.state;
67+
state.options = options;
68+
fix.detectChanges();
69+
70+
let gridState = state.getState(false) as IGridState;
71+
expect(gridState['sorting']).toBeFalsy();
72+
expect(gridState['groupBy']).toBeFalsy();
73+
74+
gridState = state.getState(false, ['filtering', 'sorting', 'groupBy']) as IGridState;
75+
expect(gridState['sorting']).toBeFalsy();
76+
expect(gridState['groupBy']).toBeFalsy();
77+
});
78+
6079
it('getState should return corect JSON string', () => {
6180
// tslint:disable-next-line:max-line-length
6281
const initialGridState = '{"columns":[{"pinned":true,"sortable":true,"filterable":true,"editable":false,"sortingIgnoreCase":true,"filteringIgnoreCase":true,"headerClasses":"testCss","headerGroupClasses":"","maxWidth":"300px","groupable":false,"movable":true,"hidden":false,"dataType":"number","hasSummary":false,"field":"ID","width":"150px","header":"ID","resizable":true,"searchable":false,"selectable":true},{"pinned":false,"sortable":true,"filterable":true,"editable":false,"sortingIgnoreCase":true,"filteringIgnoreCase":true,"headerClasses":"","headerGroupClasses":"","maxWidth":"300px","groupable":true,"movable":true,"hidden":false,"dataType":"string","hasSummary":false,"field":"Name","width":"150px","header":"Name","resizable":true,"searchable":true,"selectable":true},{"pinned":false,"sortable":false,"filterable":true,"editable":true,"sortingIgnoreCase":true,"filteringIgnoreCase":true,"headerClasses":"","headerGroupClasses":"","maxWidth":"300px","groupable":false,"movable":false,"hidden":false,"dataType":"date","hasSummary":true,"field":"Hire Date","width":"140px","header":"Hire Date","resizable":true,"searchable":true,"selectable":true},{"pinned":false,"sortable":true,"filterable":true,"editable":true,"sortingIgnoreCase":true,"filteringIgnoreCase":true,"headerClasses":"","headerGroupClasses":"","maxWidth":"300px","groupable":true,"movable":false,"hidden":false,"dataType":"number","hasSummary":false,"field":"Age","width":"110px","header":"Age","resizable":false,"searchable":true,"selectable":true}],"filtering":{"filteringOperands":[],"operator":0},"advancedFiltering":{},"sorting":[],"paging":{"index":0,"recordsPerPage":5,"metadata":{"countPages":4,"countRecords":18,"error":0}},"cellSelection":[],"rowSelection":[],"columnSelection":[],"rowPinning":[],"expansion":[],"rowIslands":[]}';
@@ -88,7 +107,6 @@ describe('IgxTreeGridState - input properties #tGrid', () => {
88107
const paging = grid.pagingState;
89108
const sorting = grid.sortingExpressions;
90109
const filtering = grid.filteringExpressionsTree;
91-
const advancedFiltering = grid.advancedFilteringExpressionsTree;
92110

93111
const gridState = state.getState(false) as IGridState;
94112
HelperFunctions.verifyPaging(paging, gridState);

0 commit comments

Comments
 (0)