@@ -108,27 +108,6 @@ describe('Column Pinning UI #grid', () => {
108108 verifyColumnIsPinned ( column , false , 0 ) ;
109109 } ) ;
110110
111- it ( 'Checks order of columns after unpinning' , ( ) => {
112- for ( const column of grid . columnList ) {
113- column . pin ( ) ;
114- }
115- fix . detectChanges ( ) ;
116- grid . getColumnByName ( 'ID' ) . unpin ( ) ;
117- grid . getColumnByName ( 'ReleaseDate' ) . unpin ( ) ;
118- grid . getColumnByName ( 'Downloads' ) . unpin ( ) ;
119- grid . getColumnByName ( 'ProductName' ) . unpin ( ) ;
120- grid . getColumnByName ( 'Released' ) . unpin ( ) ;
121- fix . detectChanges ( ) ;
122- grid . unpinnedColumns . forEach ( ( column , index ) => {
123- if ( index === grid . unpinnedColumns . length - 1 ) {
124- return ;
125- }
126- expect (
127- column . index < grid . unpinnedColumns [ index + 1 ] . index
128- ) . toBe ( true ) ;
129- } ) ;
130- } ) ;
131-
132111 it ( 'reflects properly grid column pinned value changes.' , ( ) => {
133112 const name = 'ReleaseDate' ;
134113 verifyCheckbox ( name , false , false , columnChooserElement ) ;
@@ -307,6 +286,36 @@ describe('Column Pinning UI #grid', () => {
307286 ) . toBe ( true ) ;
308287 } ) ;
309288 } ) ;
289+
290+ it ( 'Checks order of columns after unpinning if there are hidden columns' , ( ) => {
291+ // Columns are ordered like this: ID, ProductName, Downloads, Released, ReleaseDate
292+ expect ( grid . getColumnByName ( 'Downloads' ) . index ) . toBe ( 2 ) ;
293+ expect ( grid . getColumnByName ( 'Released' ) . index ) . toBe ( 3 ) ;
294+
295+ grid . getColumnByName ( 'ID' ) . hidden = true ;
296+ grid . getColumnByName ( 'Downloads' ) . pin ( ) ;
297+ grid . getColumnByName ( 'Released' ) . pin ( ) ;
298+ fix . detectChanges ( ) ;
299+
300+ // unpinnedColumns contains only visible cols
301+ expect ( grid . unpinnedColumns . length ) . toBe ( 2 ) ;
302+ // _unpinnedColumns contains all unpinned cols (including hidden)
303+ expect ( ( grid as any ) . _unpinnedColumns . length ) . toBe ( 3 ) ;
304+
305+ grid . getColumnByName ( 'Released' ) . unpin ( ) ;
306+ fix . detectChanges ( ) ;
307+
308+ expect ( grid . unpinnedColumns . length ) . toBe ( 3 ) ;
309+ expect ( ( grid as any ) . _unpinnedColumns . length ) . toBe ( 4 ) ;
310+ // Downloads is still pinned; ID is not part of unpinnedColumns
311+ expect ( grid . getColumnByName ( 'Released' ) . field ) . toEqual ( ( grid as any ) . unpinnedColumns [ 1 ] . field ) ;
312+ expect ( grid . getColumnByName ( 'Released' ) . field ) . toEqual ( ( grid as any ) . _unpinnedColumns [ 2 ] . field ) ;
313+
314+ grid . getColumnByName ( 'Downloads' ) . unpin ( ) ;
315+ fix . detectChanges ( ) ;
316+ expect ( grid . getColumnByName ( 'Downloads' ) . field ) . toEqual ( ( grid as any ) . unpinnedColumns [ 1 ] . field ) ;
317+ expect ( grid . getColumnByName ( 'Downloads' ) . field ) . toEqual ( ( grid as any ) . _unpinnedColumns [ 2 ] . field ) ;
318+ } ) ;
310319 } ) ;
311320
312321 describe ( 'Pinning with Column Groups' , ( ) => {
0 commit comments