@@ -33,6 +33,7 @@ import {AxisDirection, FobCardAdapter, LinkedTime} from './linked_time_types';
3333 [linkedTime]="linkedTime"
3434 [cardAdapter]="fobCardAdapter"
3535 (onSelectTimeChanged)="onSelectTimeChanged($event)"
36+ (onSelectTimeToggle)="onSelectTimeToggle()"
3637 ></linked-time-fob-controller>
3738 ` ,
3839} )
@@ -45,10 +46,12 @@ class TestableComponent {
4546 @Input ( ) fobCardAdapter ! : FobCardAdapter ;
4647
4748 @Input ( ) onSelectTimeChanged ! : ( newLinkedTime : LinkedTime ) => void ;
49+ @Input ( ) onSelectTimeToggle ! : ( ) => void ;
4850}
4951
5052describe ( 'linked_time_fob_controller' , ( ) => {
5153 let onSelectTimeChanged : jasmine . Spy ;
54+ let onSelectTimeToggle : jasmine . Spy ;
5255 let getHighestStepSpy : jasmine . Spy ;
5356 let getLowestStepSpy : jasmine . Spy ;
5457 let getAxisPositionFromStepSpy : jasmine . Spy ;
@@ -106,6 +109,9 @@ describe('linked_time_fob_controller', () => {
106109 onSelectTimeChanged = jasmine . createSpy ( ) ;
107110 fixture . componentInstance . onSelectTimeChanged = onSelectTimeChanged ;
108111
112+ onSelectTimeToggle = jasmine . createSpy ( ) ;
113+ fixture . componentInstance . onSelectTimeToggle = onSelectTimeToggle ;
114+
109115 return fixture ;
110116 }
111117
@@ -671,4 +677,56 @@ describe('linked_time_fob_controller', () => {
671677 } ) ;
672678 } ) ;
673679 } ) ;
680+ describe ( 'deselecting fob' , ( ) => {
681+ it ( 'fires onSelectTimeToggle when in single selection' , ( ) => {
682+ const fixture = createComponent ( {
683+ linkedTime : { start : { step : 1 } , end : null } ,
684+ } ) ;
685+ fixture . detectChanges ( ) ;
686+
687+ const deselectButton = fixture . debugElement . query (
688+ By . css ( 'linked-time-fob.startFob button' )
689+ ) ;
690+ deselectButton . triggerEventHandler ( 'click' , { } ) ;
691+ fixture . detectChanges ( ) ;
692+
693+ expect ( onSelectTimeToggle ) . toHaveBeenCalledOnceWith ( ) ;
694+ } ) ;
695+
696+ it ( 'fires onSelectTimeChanged to remove end fob when end fob is deselected' , ( ) => {
697+ const fixture = createComponent ( {
698+ linkedTime : { start : { step : 1 } , end : { step : 3 } } ,
699+ } ) ;
700+ fixture . detectChanges ( ) ;
701+
702+ const deselectButton = fixture . debugElement . query (
703+ By . css ( 'linked-time-fob.endFob button' )
704+ ) ;
705+ deselectButton . triggerEventHandler ( 'click' , { } ) ;
706+ fixture . detectChanges ( ) ;
707+
708+ expect ( onSelectTimeChanged ) . toHaveBeenCalledOnceWith ( {
709+ start : { step : 1 } ,
710+ end : null ,
711+ } ) ;
712+ } ) ;
713+
714+ it ( 'fires onSelectTimeChanged to change the start fob step to the current end fob step and the end fob step to null when start fob is deselected in a range selection' , ( ) => {
715+ const fixture = createComponent ( {
716+ linkedTime : { start : { step : 1 } , end : { step : 3 } } ,
717+ } ) ;
718+ fixture . detectChanges ( ) ;
719+
720+ const deselectButton = fixture . debugElement . query (
721+ By . css ( 'linked-time-fob.startFob button' )
722+ ) ;
723+ deselectButton . triggerEventHandler ( 'click' , { } ) ;
724+ fixture . detectChanges ( ) ;
725+
726+ expect ( onSelectTimeChanged ) . toHaveBeenCalledOnceWith ( {
727+ start : { step : 3 } ,
728+ end : null ,
729+ } ) ;
730+ } ) ;
731+ } ) ;
674732} ) ;
0 commit comments