Skip to content

Commit a6231fa

Browse files
committed
test(daterange): controlValueAccessor test #5732
1 parent ffbd81f commit a6231fa

File tree

1 file changed

+39
-3
lines changed

1 file changed

+39
-3
lines changed

projects/igniteui-angular/src/lib/date-range-picker/date-range-picker.component.spec.ts

+39-3
Original file line numberDiff line numberDiff line change
@@ -591,9 +591,45 @@ describe('IgxDateRangePicker', () => {
591591
});
592592

593593
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+
});
597633
});
598634

599635
describe('Templating', () => {

0 commit comments

Comments
 (0)