@@ -10,35 +10,12 @@ import IrisGridTestUtils from './IrisGridTestUtils';
1010import IrisGridUtils , {
1111 DehydratedSort ,
1212 LegacyDehydratedSort ,
13+ isPanelStateV1 ,
1314} from './IrisGridUtils' ;
1415
1516const irisGridUtils = new IrisGridUtils ( dh ) ;
1617const irisGridTestUtils = new IrisGridTestUtils ( dh ) ;
1718
18- function makeFilter ( ) {
19- // eslint-disable-next-line @typescript-eslint/no-explicit-any
20- return new ( dh as any ) . FilterCondition ( ) ;
21- }
22-
23- function makeColumns ( count = 30 ) {
24- const columns : Column [ ] = [ ] ;
25-
26- for ( let i = 0 ; i < count ; i += 1 ) {
27- // eslint-disable-next-line @typescript-eslint/no-explicit-any
28- const column = new ( dh as any ) . Column ( { index : i , name : `name_${ i } ` } ) ;
29- columns . push ( column ) ;
30- }
31-
32- return columns ;
33- }
34-
35- function makeTable ( {
36- columns = makeColumns ( ) ,
37- sort = [ ] as Sort [ ] ,
38- } = { } ) : Table {
39- // eslint-disable-next-line @typescript-eslint/no-explicit-any
40- return new ( dh as any ) . Table ( { columns, sort } ) ;
41- }
4219function makeColumn ( index : number ) : Column {
4320 return irisGridTestUtils . makeColumn (
4421 `${ index } ` ,
@@ -47,6 +24,16 @@ function makeColumn(index: number): Column {
4724 ) ;
4825}
4926
27+ function makeTable ( {
28+ columns = irisGridTestUtils . makeColumns ( 10 , 'name_' ) ,
29+ sort = [ ] as Sort [ ] ,
30+ } = { } ) : Table {
31+ return irisGridTestUtils . makeTable ( {
32+ columns,
33+ sort,
34+ } ) ;
35+ }
36+
5037describe ( 'quickfilters tests' , ( ) => {
5138 it ( 'exports/imports empty list' , ( ) => {
5239 const table = irisGridTestUtils . makeTable ( ) ;
@@ -62,10 +49,10 @@ describe('quickfilters tests', () => {
6249 } ) ;
6350
6451 it ( 'exports/imports quickFilters' , ( ) => {
65- const table = makeTable ( ) ;
52+ const table = irisGridTestUtils . makeTable ( ) ;
6653 const column = 9 ;
6754 const text = '>1000' ;
68- const filter = makeFilter ( ) ;
55+ const filter = irisGridTestUtils . makeFilter ( ) ;
6956 const quickFilters = new Map ( [ [ column , { text, filter } ] ] ) ;
7057
7158 const exportedFilters = IrisGridUtils . dehydrateQuickFilters ( quickFilters ) ;
@@ -93,7 +80,7 @@ describe('quickfilters tests', () => {
9380
9481describe ( 'advanced filter tests' , ( ) => {
9582 it ( 'exports/imports empty list' , ( ) => {
96- const table = makeTable ( ) ;
83+ const table = irisGridTestUtils . makeTable ( ) ;
9784 const filters = new Map ( ) ;
9885 const exportedFilters = irisGridUtils . dehydrateAdvancedFilters (
9986 table . columns ,
@@ -112,7 +99,7 @@ describe('advanced filter tests', () => {
11299 it ( 'exports advanced filters' , ( ) => {
113100 const table = makeTable ( ) ;
114101 const column = 7 ;
115- const filter = makeFilter ( ) ;
102+ const filter = irisGridTestUtils . makeFilter ( ) ;
116103 const options = {
117104 filterItems : [ { selectedType : '' , value : '' , key : 0 } ] ,
118105 filterOperators : [ ] ,
@@ -151,7 +138,7 @@ describe('advanced filter tests', () => {
151138describe ( 'sort exporting/importing' , ( ) => {
152139 it ( 'exports/imports empty sort' , ( ) => {
153140 const sort = [ ] ;
154- const table = makeTable ( { sort } ) ;
141+ const table = irisGridTestUtils . makeTable ( { sort } ) ;
155142 const exportedSort = IrisGridUtils . dehydrateSort ( sort ) ;
156143 expect ( exportedSort ) . toEqual ( [ ] ) ;
157144
@@ -160,7 +147,7 @@ describe('sort exporting/importing', () => {
160147 } ) ;
161148
162149 it ( 'should export (dehydrate) sorts' , ( ) => {
163- const columns = makeColumns ( ) ;
150+ const columns = irisGridTestUtils . makeColumns ( 10 , 'name_' ) ;
164151 const sort = [ columns [ 3 ] . sort ( ) , columns [ 7 ] . sort ( ) . abs ( ) . desc ( ) ] ;
165152 const dehydratedSorts = IrisGridUtils . dehydrateSort ( sort ) ;
166153
@@ -171,9 +158,9 @@ describe('sort exporting/importing', () => {
171158 } ) ;
172159
173160 describe ( 'should import (hydrate) sorts' , ( ) => {
174- const columns = makeColumns ( ) ;
161+ const columns = irisGridTestUtils . makeColumns ( 10 , 'name_' ) ;
175162 const sort = [ columns [ 3 ] . sort ( ) , columns [ 7 ] . sort ( ) . abs ( ) . desc ( ) ] ;
176- const table = makeTable ( { columns, sort } ) ;
163+ const table = irisGridTestUtils . makeTable ( { columns, sort } ) ;
177164
178165 const dehydratedSorts = IrisGridUtils . dehydrateSort ( sort ) ;
179166
@@ -210,7 +197,7 @@ describe('sort exporting/importing', () => {
210197describe ( 'pendingDataMap hydration/dehydration' , ( ) => {
211198 it ( 'dehydrates/hydrates empty map' , ( ) => {
212199 const pendingDataMap = new Map ( ) ;
213- const columns = makeColumns ( ) ;
200+ const columns = irisGridTestUtils . makeColumns ( 10 , 'name_' ) ;
214201 const dehydratedMap = irisGridUtils . dehydratePendingDataMap (
215202 columns ,
216203 pendingDataMap
@@ -242,7 +229,7 @@ describe('pendingDataMap hydration/dehydration', () => {
242229 } ,
243230 ] ,
244231 ] ) ;
245- const columns = makeColumns ( ) ;
232+ const columns = irisGridTestUtils . makeColumns ( 10 , 'name_' ) ;
246233 const dehydratedMap = irisGridUtils . dehydratePendingDataMap (
247234 columns ,
248235 pendingDataMap
@@ -488,7 +475,7 @@ describe('validate copy ranges', () => {
488475
489476describe ( 'changeFilterColumnNamesToIndexes' , ( ) => {
490477 const DEFAULT_FILTER = { } ;
491- const columns = makeColumns ( 10 ) ;
478+ const columns = irisGridTestUtils . makeColumns ( 10 , 'name_' ) ;
492479 it ( 'Replaces column names with indexes' , ( ) => {
493480 const filters = [
494481 { name : 'name_1' , filter : DEFAULT_FILTER } ,
@@ -680,3 +667,99 @@ describe('dehydration methods', () => {
680667 ) . toBe ( true ) ;
681668 } ) ;
682669} ) ;
670+
671+ describe ( 'hydration methods' , ( ) => {
672+ it . each ( [
673+ [
674+ 'hydrateIrisGridPanelStateV1 null partition' ,
675+ {
676+ isSelectingPartition : false ,
677+ partition : null ,
678+ partitionColumn : 'name_0' ,
679+ advancedSettings : [ ] ,
680+ } ,
681+ ] ,
682+ [
683+ 'hydrateIrisGridPanelStateV1 unselected partition' ,
684+ {
685+ isSelectingPartition : false ,
686+ partition : '' ,
687+ partitionColumn : 'name_0' ,
688+ advancedSettings : [ ] ,
689+ } ,
690+ ] ,
691+ [
692+ 'hydrateIrisGridPanelStateV1 one selected partition' ,
693+ {
694+ isSelectingPartition : true ,
695+ partition : '' ,
696+ partitionColumn : 'name_0' ,
697+ advancedSettings : [ ] ,
698+ } ,
699+ ] ,
700+ [
701+ 'hydrateIrisGridPanelStateV2 no partition columns' ,
702+ {
703+ isSelectingPartition : false ,
704+ partitions : [ ] ,
705+ partitionColumns : [ ] ,
706+ advancedSettings : [ ] ,
707+ } ,
708+ ] ,
709+ [
710+ 'hydrateIrisGridPanelStateV2 two unselected columns' ,
711+ {
712+ isSelectingPartition : true ,
713+ partitions : [ null , null ] ,
714+ partitionColumns : [ 'name_0' , 'name_1' ] ,
715+ advancedSettings : [ ] ,
716+ } ,
717+ ] ,
718+ [
719+ 'hydrateIrisGridPanelStateV2 two selected columns' ,
720+ {
721+ isSelectingPartition : true ,
722+ partitions : [ 'a' , 'b' ] ,
723+ partitionColumns : [ 'name_0' , 'name_1' ] ,
724+ advancedSettings : [ ] ,
725+ } ,
726+ ] ,
727+ [
728+ 'hydrateIrisGridPanelStateV2 mixed selection columns' ,
729+ {
730+ isSelectingPartition : true ,
731+ partitions : [ null , 'b' , null ] ,
732+ partitionColumns : [ 'name_0' , 'name_1' , 'name_2' ] ,
733+ advancedSettings : [ ] ,
734+ } ,
735+ ] ,
736+ [
737+ 'hydrateIrisGridPanelStateV2 mixed selection columns' ,
738+ {
739+ isSelectingPartition : true ,
740+ partitions : [ 'a' , null , 'b' ] ,
741+ partitionColumns : [ 'name_0' , 'name_1' , 'name_2' ] ,
742+ advancedSettings : [ ] ,
743+ } ,
744+ ] ,
745+ ] ) ( '%s partitions and columns match' , ( _label , panelState ) => {
746+ const result = IrisGridUtils . hydrateIrisGridPanelState (
747+ irisGridTestUtils . makeModel (
748+ irisGridTestUtils . makeTable ( {
749+ columns : irisGridTestUtils . makeColumns ( 5 , 'name_' ) ,
750+ } )
751+ ) ,
752+ panelState
753+ ) ;
754+ expect ( result . isSelectingPartition ) . toBe ( panelState . isSelectingPartition ) ;
755+ if ( isPanelStateV1 ( panelState ) ) {
756+ expect ( result . partitions ) . toEqual ( [ panelState . partition ] ) ;
757+ expect ( result . partitionColumns [ 0 ] . name ) . toBe ( panelState . partitionColumn ) ;
758+ } else {
759+ expect ( result . partitions ) . toEqual ( panelState . partitions ) ;
760+ panelState . partitionColumns . forEach ( ( partition , index ) => {
761+ expect ( result . partitionColumns [ index ] . name === partition ) . toBeTruthy ( ) ;
762+ } ) ;
763+ }
764+ } ) ;
765+ } ) ;
0 commit comments