@@ -591,9 +591,45 @@ describe('IgxDateRangePicker', () => {
591
591
} ) ;
592
592
593
593
describe ( 'Validation' , ( ) => {
594
- // Single Input (Default) Range Picker
595
- // Two Inputs Range Picker
596
- // TODO it('Should correctly implement interface methods', () => {
594
+ let dateRangePicker : IgxDateRangePickerComponent ;
595
+ fit ( 'IgxDateRangePickerComponent ControlValueAccessor Unit' , ( ) => {
596
+ const mockNgControl = jasmine . createSpyObj ( 'NgControl' , [ 'registerOnChangeCb' , 'registerOnTouchedCb' ] ) ;
597
+ const range = { start : new Date ( 2020 , 1 , 18 ) , end : new Date ( 2020 , 1 , 28 ) } ;
598
+ const rangeUpdate = { start : new Date ( 2020 , 2 , 22 ) , end : new Date ( 2020 , 2 , 25 ) } ;
599
+
600
+ // init
601
+ dateRangePicker = new IgxDateRangePickerComponent ( null , 'en' , null ) ;
602
+ dateRangePicker . registerOnChange ( mockNgControl . registerOnChangeCb ) ;
603
+ dateRangePicker . registerOnTouched ( mockNgControl . registerOnTouchedCb ) ;
604
+ spyOn ( dateRangePicker , 'handleSelection' ) ;
605
+
606
+ // writeValue
607
+ expect ( dateRangePicker . value ) . toBeUndefined ( ) ;
608
+ expect ( mockNgControl . registerOnChangeCb ) . not . toHaveBeenCalled ( ) ;
609
+ dateRangePicker . writeValue ( range ) ;
610
+ expect ( dateRangePicker . value ) . toBe ( range ) ;
611
+
612
+ // set value & handleSelection call _onChangeCallback
613
+ dateRangePicker . value = rangeUpdate ;
614
+ expect ( mockNgControl . registerOnChangeCb ) . toHaveBeenCalledWith ( rangeUpdate ) ;
615
+
616
+ dateRangePicker . handleSelection ( [ range . start ] ) ;
617
+ expect ( dateRangePicker . handleSelection ) . toHaveBeenCalledWith ( [ range . start ] ) ;
618
+ expect ( dateRangePicker . handleSelection ) . toHaveBeenCalledTimes ( 1 ) ;
619
+ expect ( mockNgControl . registerOnChangeCb ) . toHaveBeenCalledWith ( { start : range . start , end : range . end } ) ;
620
+
621
+ // awaiting implementation - OnTouched callback
622
+ // Docs: changes the value, turning the control dirty; or blurs the form control element, setting the control to touched.
623
+ // when handleSelection fires should be touched&dirty // when input is blurred(two inputs), should be touched.
624
+ // dateRangePicker.handleSelection([range.start]);
625
+ // expect(mockNgControl.registerOnTouchedCb).toHaveBeenCalledTimes(1);
626
+
627
+ // awaiting implementation - setDisabledState
628
+ // dateRangePicker.setDisabledState(true);
629
+ // expect(dateRangePicker.disabled).toBe(true);
630
+ // dateRangePicker.setDisabledState(false);
631
+ // expect(dateRangePicker.disabled).toBe(false);
632
+ } ) ;
597
633
} ) ;
598
634
599
635
describe ( 'Templating' , ( ) => {
0 commit comments