@@ -72,7 +72,7 @@ describe('IgxGridState - input properties #grid', () => {
7272
7373 it ( 'getState should return corect JSON string' , ( ) => {
7474 // tslint:disable-next-line:max-line-length
75- 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":"ProductID","width":"150px","header":"Product ID","resizable":true,"searchable":false},{"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":"ProductName","width":"150px","header":"Prodyct Name","resizable":true,"searchable":true},{"pinned":false,"sortable":false,"filterable":true,"editable":true,"sortingIgnoreCase":true,"filteringIgnoreCase":true,"headerClasses":"","headerGroupClasses":"","maxWidth":"300px","groupable":false,"movable":false,"hidden":false,"dataType":"boolean","hasSummary":true,"field":"InStock","width":"140px","header":"In Stock","resizable":true,"searchable":true},{"pinned":false,"sortable":true,"filterable":false,"editable":true,"sortingIgnoreCase":true,"filteringIgnoreCase":true,"headerClasses":"","headerGroupClasses":"","maxWidth":"300px","groupable":true,"movable":false,"hidden":false,"dataType":"date","hasSummary":false,"field":"OrderDate","width":"110px","header":"Date ordered","resizable":false,"searchable":true}],"filtering":{"filteringOperands":[],"operator":0},"sorting":[],"groupBy":{"expressions":[],"expansion":[],"defaultExpanded":true},"paging":{"index":0,"recordsPerPage":15,"metadata":{"countPages":1,"countRecords":10,"error":0}},"cellSelection":[],"rowSelection":[],"columnSelection":[]}' ;
75+ 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":"ProductID","width":"150px","header":"Product ID","resizable":true,"searchable":false},{"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":"ProductName","width":"150px","header":"Prodyct Name","resizable":true,"searchable":true},{"pinned":false,"sortable":false,"filterable":true,"editable":true,"sortingIgnoreCase":true,"filteringIgnoreCase":true,"headerClasses":"","headerGroupClasses":"","maxWidth":"300px","groupable":false,"movable":false,"hidden":false,"dataType":"boolean","hasSummary":true,"field":"InStock","width":"140px","header":"In Stock","resizable":true,"searchable":true},{"pinned":false,"sortable":true,"filterable":false,"editable":true,"sortingIgnoreCase":true,"filteringIgnoreCase":true,"headerClasses":"","headerGroupClasses":"","maxWidth":"300px","groupable":true,"movable":false,"hidden":false,"dataType":"date","hasSummary":false,"field":"OrderDate","width":"110px","header":"Date ordered","resizable":false,"searchable":true}],"filtering":{"filteringOperands":[],"operator":0},"sorting":[],"groupBy":{"expressions":[],"expansion":[],"defaultExpanded":true},"paging":{"index":0,"recordsPerPage":15,"metadata":{"countPages":1,"countRecords":10,"error":0}},"cellSelection":[],"rowSelection":[],"columnSelection":[],"rowPinning":[]}' ;
7676 const fix = TestBed . createComponent ( IgxGridStateComponent ) ;
7777 fix . detectChanges ( ) ;
7878
@@ -392,6 +392,30 @@ describe('IgxGridState - input properties #grid', () => {
392392 expect ( gridState ) . toBe ( rowSelectionState ) ;
393393 } ) ;
394394
395+ it ( 'setState should correctly restore grid row pinning state from object' , ( ) => {
396+ const fix = TestBed . createComponent ( IgxGridStateComponent ) ;
397+ fix . detectChanges ( ) ;
398+ const grid = fix . componentInstance . grid ;
399+ grid . primaryKey = 'ProductID' ;
400+ fix . detectChanges ( ) ;
401+ const state = fix . componentInstance . state ;
402+ const rowPinState = '{"rowPinning":[1,3]}' ;
403+ const initialState = '{"rowPinning":[]}' ;
404+ const rowPinStateObject = JSON . parse ( rowPinState ) ;
405+
406+ let gridState = state . getState ( true , 'rowPinning' ) ;
407+ expect ( gridState ) . toBe ( initialState ) ;
408+
409+ state . setState ( rowPinStateObject ) ;
410+ fix . detectChanges ( ) ;
411+
412+ expect ( grid . pinnedRows . length ) . toBe ( 2 ) ;
413+ expect ( grid . pinnedRows [ 0 ] . rowID ) . toBe ( 1 ) ;
414+ expect ( grid . pinnedRows [ 1 ] . rowID ) . toBe ( 3 ) ;
415+ gridState = state . getState ( true , 'rowPinning' ) ;
416+ expect ( gridState ) . toBe ( rowPinState ) ;
417+ } ) ;
418+
395419 it ( 'setState should correctly restore grid cell selection state from string' , ( ) => {
396420 const fix = TestBed . createComponent ( IgxGridStateComponent ) ;
397421 fix . detectChanges ( ) ;
0 commit comments