Skip to content

Commit

Permalink
fix(state): should not return excluded feats #7025
Browse files Browse the repository at this point in the history
  • Loading branch information
hanastasov committed Jul 1, 2020
1 parent 929cf02 commit 9d62f97
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 27 deletions.
16 changes: 5 additions & 11 deletions projects/igniteui-angular/src/lib/grids/state.directive.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -137,20 +137,14 @@ describe('IgxGridState - input properties #grid', () => {
const fix = TestBed.createComponent(IgxGridStateWithOptionsComponent);
fix.detectChanges();
const state = fix.componentInstance.state;
const grid = fix.componentInstance.grid;
const pagingState = grid.pagingState;
const filtering = grid.filteringExpressionsTree;
const sorting = grid.sortingExpressions;

let gridState = state.getState(false) as IGridState;
HelperFunctions.verifyFilteringExpressions(filtering, gridState);
HelperFunctions.verifySortingExpressions(sorting, gridState);
HelperFunctions.verifyPaging(pagingState, gridState);
expect(gridState['sorting']).toBeFalsy();
expect(gridState['groupBy']).toBeFalsy();

gridState = state.getState(false, ['filtering', 'sorting', 'paging']) as IGridState;
HelperFunctions.verifyFilteringExpressions(filtering, gridState);
HelperFunctions.verifySortingExpressions(sorting, gridState);
HelperFunctions.verifyPaging(pagingState, gridState);
gridState = state.getState(false, ['filtering', 'sorting', 'groupBy']) as IGridState;
expect(gridState['sorting']).toBeFalsy();
expect(gridState['groupBy']).toBeFalsy();
});

it('getState should return corect filtering state', () => {
Expand Down
14 changes: 8 additions & 6 deletions projects/igniteui-angular/src/lib/grids/state.directive.ts
Original file line number Diff line number Diff line change
Expand Up @@ -222,13 +222,15 @@ export class IgxGridStateDirective {
this.applyFeatures(keys);
let gridState = {} as IGridState;
this.features.forEach(f => {
f = f === 'inheritance' ? GridFeatures.ROW_ISLANDS : f;
if (!(this.grid instanceof IgxGridComponent) && f === FlatGridFeatures.GROUP_BY) {
return;
if (this.options[f]) {
f = f === 'inheritance' ? GridFeatures.ROW_ISLANDS : f;
if (!(this.grid instanceof IgxGridComponent) && f === FlatGridFeatures.GROUP_BY) {
return;
}
const feature = this.getFeature(f);
const featureState: IGridState = feature.getFeatureState(this);
gridState = Object.assign(gridState, featureState);
}
const feature = this.getFeature(f);
const featureState: IGridState = feature.getFeatureState(this);
gridState = Object.assign(gridState, featureState);
});
return gridState;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,24 +132,27 @@ describe('IgxHierarchicalGridState - input properties #hGrid', () => {
fix.detectChanges();
const state = fix.componentInstance.state;
grid = fix.componentInstance.hgrid;
const filtering = grid.filteringExpressionsTree;
const sorting = grid.sortingExpressions;

const optionsInput = {
filtering: false,
advancedFiltering: true,
paging: false,
sorting: false
};

state.options = optionsInput;

let gridState = state.getState(false) as IGridState;
HelperFunctions.verifyFilteringExpressions(filtering, gridState);
HelperFunctions.verifySortingExpressions(sorting, gridState);
expect(gridState['sorting']).toBeFalsy();
expect(gridState['paging']).toBeFalsy();

gridState = state.getState(false, ['filtering', 'sorting']) as IGridState;
HelperFunctions.verifyFilteringExpressions(filtering, gridState);
HelperFunctions.verifySortingExpressions(sorting, gridState);
const gridsCollection = HelperFunctions.getChildGridsCollection(grid, gridState);
gridsCollection.forEach(childGrid => {
expect(childGrid.state['sorting']).toBeFalsy();
expect(childGrid.state['paging']).toBeFalsy();
});

gridState = state.getState(false, ['filtering', 'sorting', 'paging', 'inheritance']) as IGridState;
expect(gridState['sorting']).toBeFalsy();
expect(gridState['paging']).toBeFalsy();
});

it('getState should return correct filtering state', () => {
Expand Down
20 changes: 19 additions & 1 deletion projects/igniteui-angular/src/lib/grids/state.treegrid.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,25 @@ describe('IgxTreeGridState - input properties #tGrid', () => {
expect(state.options).toEqual(jasmine.objectContaining(defaultOptions));
});

it('getState should return corect IGridState object when options are not default', () => {
const options = {
sorting: false,
paging: false
};
fix.detectChanges();
const state = fix.componentInstance.state;
state.options = options;
fix.detectChanges();

let gridState = state.getState(false) as IGridState;
expect(gridState['sorting']).toBeFalsy();
expect(gridState['groupBy']).toBeFalsy();

gridState = state.getState(false, ['filtering', 'sorting', 'groupBy']) as IGridState;
expect(gridState['sorting']).toBeFalsy();
expect(gridState['groupBy']).toBeFalsy();
});

it('getState should return corect JSON string', () => {
// tslint:disable-next-line:max-line-length
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":[]}';
Expand Down Expand Up @@ -88,7 +107,6 @@ describe('IgxTreeGridState - input properties #tGrid', () => {
const paging = grid.pagingState;
const sorting = grid.sortingExpressions;
const filtering = grid.filteringExpressionsTree;
const advancedFiltering = grid.advancedFilteringExpressionsTree;

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

0 comments on commit 9d62f97

Please sign in to comment.