@@ -438,6 +438,7 @@ describe('metrics selectors', () => {
438
438
const state = appStateFromMetricsState (
439
439
buildMetricsState ( {
440
440
...partialState ,
441
+ rangeSelectionEnabled : true ,
441
442
cardStateMap : {
442
443
card1 : {
443
444
stepSelectionOverride : CardFeatureOverride . OVERRIDE_AS_ENABLED ,
@@ -551,6 +552,7 @@ describe('metrics selectors', () => {
551
552
const state = appStateFromMetricsState (
552
553
buildMetricsState ( {
553
554
...partialState ,
555
+ rangeSelectionEnabled : true ,
554
556
cardStateMap : {
555
557
card1 : {
556
558
stepSelectionOverride : CardFeatureOverride . OVERRIDE_AS_ENABLED ,
@@ -577,6 +579,7 @@ describe('metrics selectors', () => {
577
579
const state = appStateFromMetricsState (
578
580
buildMetricsState ( {
579
581
...partialState ,
582
+ rangeSelectionEnabled : true ,
580
583
cardStateMap : {
581
584
card1 : {
582
585
stepSelectionOverride : CardFeatureOverride . OVERRIDE_AS_ENABLED ,
@@ -594,22 +597,206 @@ describe('metrics selectors', () => {
594
597
end : { step : 5 } ,
595
598
} ) ;
596
599
} ) ;
600
+
601
+ it ( 'removes end value if range selection is overridden as disabled' , ( ) => {
602
+ const state = appStateFromMetricsState (
603
+ buildMetricsState ( {
604
+ ...partialState ,
605
+ rangeSelectionEnabled : true ,
606
+ cardStateMap : {
607
+ card1 : {
608
+ stepSelectionOverride : CardFeatureOverride . OVERRIDE_AS_ENABLED ,
609
+ rangeSelectionOverride :
610
+ CardFeatureOverride . OVERRIDE_AS_DISABLED ,
611
+ dataMinMax : {
612
+ minStep : 0 ,
613
+ maxStep : 5 ,
614
+ } ,
615
+ } ,
616
+ } ,
617
+ } )
618
+ ) ;
619
+
620
+ expect ( selectors . getMetricsCardTimeSelection ( state , 'card1' ) ) . toEqual ( {
621
+ start : { step : 0 } ,
622
+ end : null ,
623
+ } ) ;
624
+ } ) ;
625
+
626
+ it ( 'removes end value if range selection is globally disabled' , ( ) => {
627
+ const state = appStateFromMetricsState (
628
+ buildMetricsState ( {
629
+ ...partialState ,
630
+ rangeSelectionEnabled : false ,
631
+ cardStateMap : {
632
+ card1 : {
633
+ stepSelectionOverride : CardFeatureOverride . OVERRIDE_AS_ENABLED ,
634
+ dataMinMax : {
635
+ minStep : 0 ,
636
+ maxStep : 5 ,
637
+ } ,
638
+ } ,
639
+ } ,
640
+ } )
641
+ ) ;
642
+
643
+ expect ( selectors . getMetricsCardTimeSelection ( state , 'card1' ) ) . toEqual ( {
644
+ start : { step : 0 } ,
645
+ end : null ,
646
+ } ) ;
647
+ } ) ;
648
+
649
+ it ( 'does not remove end value if range selection is overridden as enabled' , ( ) => {
650
+ const state = appStateFromMetricsState (
651
+ buildMetricsState ( {
652
+ ...partialState ,
653
+ rangeSelectionEnabled : false ,
654
+ cardStateMap : {
655
+ card1 : {
656
+ stepSelectionOverride : CardFeatureOverride . OVERRIDE_AS_ENABLED ,
657
+ rangeSelectionOverride : CardFeatureOverride . OVERRIDE_AS_ENABLED ,
658
+ dataMinMax : {
659
+ minStep : 0 ,
660
+ maxStep : 5 ,
661
+ } ,
662
+ } ,
663
+ } ,
664
+ } )
665
+ ) ;
666
+
667
+ expect ( selectors . getMetricsCardTimeSelection ( state , 'card1' ) ) . toEqual ( {
668
+ start : { step : 0 } ,
669
+ end : { step : 5 } ,
670
+ } ) ;
671
+ } ) ;
672
+
673
+ it ( 'clips time selection if it exceeds the cards minMax' , ( ) => {
674
+ const state = appStateFromMetricsState (
675
+ buildMetricsState ( {
676
+ ...partialState ,
677
+ rangeSelectionEnabled : true ,
678
+ cardStateMap : {
679
+ card1 : {
680
+ stepSelectionOverride : CardFeatureOverride . OVERRIDE_AS_ENABLED ,
681
+ dataMinMax : {
682
+ minStep : 5 ,
683
+ maxStep : 10 ,
684
+ } ,
685
+ timeSelection : {
686
+ start : { step : 0 } ,
687
+ end : { step : 15 } ,
688
+ } ,
689
+ } ,
690
+ } ,
691
+ } )
692
+ ) ;
693
+
694
+ expect ( selectors . getMetricsCardTimeSelection ( state , 'card1' ) ) . toEqual ( {
695
+ start : { step : 5 } ,
696
+ end : { step : 10 } ,
697
+ } ) ;
698
+ } ) ;
597
699
} ) ;
598
700
599
- it ( 'returns linkedTimeSelection if linkedTime is enabled' , ( ) => {
600
- const state = appStateFromMetricsState (
601
- buildMetricsState ( {
701
+ describe ( 'with linkedTime enabled' , ( ) => {
702
+ let partialState : Partial < MetricsState > ;
703
+ beforeEach ( ( ) => {
704
+ partialState = {
602
705
linkedTimeEnabled : true ,
603
706
linkedTimeSelection : {
604
707
start : { step : 0 } ,
605
708
end : { step : 5 } ,
606
709
} ,
607
- } )
608
- ) ;
710
+ } ;
711
+ } ) ;
609
712
610
- expect ( selectors . getMetricsCardTimeSelection ( state , 'card1' ) ) . toEqual ( {
611
- start : { step : 0 } ,
612
- end : { step : 5 } ,
713
+ it ( 'returns linkedTimeSelection if linkedTime is enabled' , ( ) => {
714
+ const state = appStateFromMetricsState (
715
+ buildMetricsState ( {
716
+ ...partialState ,
717
+ rangeSelectionEnabled : true ,
718
+ cardStateMap : {
719
+ card1 : {
720
+ dataMinMax : {
721
+ minStep : 0 ,
722
+ maxStep : 5 ,
723
+ } ,
724
+ } ,
725
+ } ,
726
+ } )
727
+ ) ;
728
+
729
+ expect ( selectors . getMetricsCardTimeSelection ( state , 'card1' ) ) . toEqual ( {
730
+ start : { step : 0 } ,
731
+ end : { step : 5 } ,
732
+ } ) ;
733
+ } ) ;
734
+
735
+ it ( 'removes end value if global range selection is disabled' , ( ) => {
736
+ const state = appStateFromMetricsState (
737
+ buildMetricsState ( {
738
+ ...partialState ,
739
+ rangeSelectionEnabled : false ,
740
+ cardStateMap : {
741
+ card1 : {
742
+ dataMinMax : {
743
+ minStep : 0 ,
744
+ maxStep : 5 ,
745
+ } ,
746
+ } ,
747
+ } ,
748
+ } )
749
+ ) ;
750
+
751
+ expect ( selectors . getMetricsCardTimeSelection ( state , 'card1' ) ) . toEqual ( {
752
+ start : { step : 0 } ,
753
+ end : null ,
754
+ } ) ;
755
+ } ) ;
756
+
757
+ it ( 'maintains end value if local range selection is overridden as disabled' , ( ) => {
758
+ const state = appStateFromMetricsState (
759
+ buildMetricsState ( {
760
+ ...partialState ,
761
+ rangeSelectionEnabled : true ,
762
+ cardStateMap : {
763
+ card1 : {
764
+ rangeSelectionOverride : CardFeatureOverride . OVERRIDE_AS_ENABLED ,
765
+ dataMinMax : {
766
+ minStep : 0 ,
767
+ maxStep : 5 ,
768
+ } ,
769
+ } ,
770
+ } ,
771
+ } )
772
+ ) ;
773
+
774
+ expect ( selectors . getMetricsCardTimeSelection ( state , 'card1' ) ) . toEqual ( {
775
+ start : { step : 0 } ,
776
+ end : { step : 5 } ,
777
+ } ) ;
778
+ } ) ;
779
+
780
+ it ( 'clips time selection based on card minMax' , ( ) => {
781
+ const state = appStateFromMetricsState (
782
+ buildMetricsState ( {
783
+ ...partialState ,
784
+ rangeSelectionEnabled : true ,
785
+ cardStateMap : {
786
+ card1 : {
787
+ dataMinMax : {
788
+ minStep : 1 ,
789
+ maxStep : 4 ,
790
+ } ,
791
+ } ,
792
+ } ,
793
+ } )
794
+ ) ;
795
+
796
+ expect ( selectors . getMetricsCardTimeSelection ( state , 'card1' ) ) . toEqual ( {
797
+ start : { step : 1 } ,
798
+ end : { step : 4 } ,
799
+ } ) ;
613
800
} ) ;
614
801
} ) ;
615
802
} ) ;
0 commit comments