@@ -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,131 @@ describe('dehydration methods', () => {
680667 ) . toBe ( true ) ;
681668 } ) ;
682669} ) ;
670+
671+ describe ( 'hydration methods' , ( ) => {
672+ it . each ( [
673+ [
674+ 'hydrateIrisGridPanelStateV1' ,
675+ {
676+ isSelectingPartition : false ,
677+ partition : null ,
678+ partitionColumn : 'INVALID' ,
679+ advancedSettings : [ ] ,
680+ } ,
681+ ] ,
682+ [
683+ 'hydrateIrisGridPanelStateV2' ,
684+ {
685+ isSelectingPartition : false ,
686+ partitions : [ null ] ,
687+ partitionColumns : [ 'INVALID' ] ,
688+ advancedSettings : [ ] ,
689+ } ,
690+ ] ,
691+ ] ) ( '%s invalid column error' , ( _label , panelState ) => {
692+ expect ( ( ) =>
693+ IrisGridUtils . hydrateIrisGridPanelState (
694+ irisGridTestUtils . makeModel (
695+ irisGridTestUtils . makeTable ( {
696+ columns : irisGridTestUtils . makeColumns ( 5 , 'name_' ) ,
697+ } )
698+ ) ,
699+ panelState
700+ )
701+ ) . toThrow ( 'Invalid partition column INVALID' ) ;
702+ } ) ;
703+
704+ it . each ( [
705+ [
706+ 'hydrateIrisGridPanelStateV1 null partition' ,
707+ {
708+ isSelectingPartition : false ,
709+ partition : null ,
710+ partitionColumn : 'name_0' ,
711+ advancedSettings : [ ] ,
712+ } ,
713+ ] ,
714+ [
715+ 'hydrateIrisGridPanelStateV1 unselected partition' ,
716+ {
717+ isSelectingPartition : false ,
718+ partition : '' ,
719+ partitionColumn : 'name_0' ,
720+ advancedSettings : [ ] ,
721+ } ,
722+ ] ,
723+ [
724+ 'hydrateIrisGridPanelStateV1 one selected partition' ,
725+ {
726+ isSelectingPartition : true ,
727+ partition : '' ,
728+ partitionColumn : 'name_0' ,
729+ advancedSettings : [ ] ,
730+ } ,
731+ ] ,
732+ [
733+ 'hydrateIrisGridPanelStateV2 no partition columns' ,
734+ {
735+ isSelectingPartition : false ,
736+ partitions : [ ] ,
737+ partitionColumns : [ ] ,
738+ advancedSettings : [ ] ,
739+ } ,
740+ ] ,
741+ [
742+ 'hydrateIrisGridPanelStateV2 two unselected columns' ,
743+ {
744+ isSelectingPartition : true ,
745+ partitions : [ null , null ] ,
746+ partitionColumns : [ 'name_0' , 'name_1' ] ,
747+ advancedSettings : [ ] ,
748+ } ,
749+ ] ,
750+ [
751+ 'hydrateIrisGridPanelStateV2 two selected columns' ,
752+ {
753+ isSelectingPartition : true ,
754+ partitions : [ 'a' , 'b' ] ,
755+ partitionColumns : [ 'name_0' , 'name_1' ] ,
756+ advancedSettings : [ ] ,
757+ } ,
758+ ] ,
759+ [
760+ 'hydrateIrisGridPanelStateV2 mixed selection columns' ,
761+ {
762+ isSelectingPartition : true ,
763+ partitions : [ null , 'b' , null ] ,
764+ partitionColumns : [ 'name_0' , 'name_1' , 'name_2' ] ,
765+ advancedSettings : [ ] ,
766+ } ,
767+ ] ,
768+ [
769+ 'hydrateIrisGridPanelStateV2 mixed selection columns' ,
770+ {
771+ isSelectingPartition : true ,
772+ partitions : [ 'a' , null , 'b' ] ,
773+ partitionColumns : [ 'name_0' , 'name_1' , 'name_2' ] ,
774+ advancedSettings : [ ] ,
775+ } ,
776+ ] ,
777+ ] ) ( '%s partitions and columns match' , ( _label , panelState ) => {
778+ const result = IrisGridUtils . hydrateIrisGridPanelState (
779+ irisGridTestUtils . makeModel (
780+ irisGridTestUtils . makeTable ( {
781+ columns : irisGridTestUtils . makeColumns ( 5 , 'name_' ) ,
782+ } )
783+ ) ,
784+ panelState
785+ ) ;
786+ expect ( result . isSelectingPartition ) . toBe ( panelState . isSelectingPartition ) ;
787+ if ( isPanelStateV1 ( panelState ) ) {
788+ expect ( result . partitions ) . toEqual ( [ panelState . partition ] ) ;
789+ expect ( result . partitionColumns [ 0 ] . name ) . toBe ( panelState . partitionColumn ) ;
790+ } else {
791+ expect ( result . partitions ) . toEqual ( panelState . partitions ) ;
792+ panelState . partitionColumns . forEach ( ( partition , index ) => {
793+ expect ( result . partitionColumns [ index ] . name === partition ) . toBeTruthy ( ) ;
794+ } ) ;
795+ }
796+ } ) ;
797+ } ) ;
0 commit comments