@@ -438,6 +438,7 @@ describe('metrics selectors', () => {
438438 const state = appStateFromMetricsState (
439439 buildMetricsState ( {
440440 ...partialState ,
441+ rangeSelectionEnabled : true ,
441442 cardStateMap : {
442443 card1 : {
443444 stepSelectionOverride : CardFeatureOverride . OVERRIDE_AS_ENABLED ,
@@ -551,6 +552,7 @@ describe('metrics selectors', () => {
551552 const state = appStateFromMetricsState (
552553 buildMetricsState ( {
553554 ...partialState ,
555+ rangeSelectionEnabled : true ,
554556 cardStateMap : {
555557 card1 : {
556558 stepSelectionOverride : CardFeatureOverride . OVERRIDE_AS_ENABLED ,
@@ -577,6 +579,7 @@ describe('metrics selectors', () => {
577579 const state = appStateFromMetricsState (
578580 buildMetricsState ( {
579581 ...partialState ,
582+ rangeSelectionEnabled : true ,
580583 cardStateMap : {
581584 card1 : {
582585 stepSelectionOverride : CardFeatureOverride . OVERRIDE_AS_ENABLED ,
@@ -594,22 +597,206 @@ describe('metrics selectors', () => {
594597 end : { step : 5 } ,
595598 } ) ;
596599 } ) ;
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+ } ) ;
597699 } ) ;
598700
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 = {
602705 linkedTimeEnabled : true ,
603706 linkedTimeSelection : {
604707 start : { step : 0 } ,
605708 end : { step : 5 } ,
606709 } ,
607- } )
608- ) ;
710+ } ;
711+ } ) ;
609712
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+ } ) ;
613800 } ) ;
614801 } ) ;
615802 } ) ;
0 commit comments