From c30740ecc5aa3fd3a39fa9612742bfdf03de47b1 Mon Sep 17 00:00:00 2001 From: neverland Date: Sat, 23 Jan 2021 10:47:22 +0800 Subject: [PATCH] fix(Calendar): should reset to default date when calling reset method (#7967) --- src/calendar/index.js | 6 ++-- src/calendar/test/index.legacy.js | 25 ---------------- src/calendar/test/index.spec.js | 50 +++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 27 deletions(-) create mode 100644 src/calendar/test/index.spec.js diff --git a/src/calendar/index.js b/src/calendar/index.js index 60c477ff5..88a621d17 100644 --- a/src/calendar/index.js +++ b/src/calendar/index.js @@ -311,7 +311,7 @@ export default createComponent({ }); }; - const reset = (date = getInitialDate(state.currentDate)) => { + const reset = (date = getInitialDate()) => { state.currentDate = date; scrollIntoView(); }; @@ -500,7 +500,9 @@ export default createComponent({ ); watch(() => props.show, init); - watch([() => props.type, () => props.minDate, () => props.maxDate], reset); + watch([() => props.type, () => props.minDate, () => props.maxDate], () => { + reset(getInitialDate(state.currentDate)); + }); watch( () => props.defaultDate, (value) => { diff --git a/src/calendar/test/index.legacy.js b/src/calendar/test/index.legacy.js index 2b3298129..eb496309e 100644 --- a/src/calendar/test/index.legacy.js +++ b/src/calendar/test/index.legacy.js @@ -196,31 +196,6 @@ test('default range date', async () => { ); }); -test('reset method', async () => { - const wrapper = mount(Calendar, { - props: { - minDate, - maxDate, - type: 'range', - poppable: false, - defaultDate: [minDate, getNextDay(minDate)], - }, - }); - - await later(); - - const days = wrapper.findAll('.van-calendar__day'); - days.at(15).trigger('click'); - days.at(18).trigger('click'); - - wrapper.vm.reset(); - - wrapper.find('.van-calendar__confirm').trigger('click'); - expect(formatRange(wrapper.emitted('confirm')[0][0])).toEqual( - '2010/1/10-2010/1/11' - ); -}); - test('set show-confirm to false', async () => { const wrapper = mount(Calendar, { props: { diff --git a/src/calendar/test/index.spec.js b/src/calendar/test/index.spec.js new file mode 100644 index 000000000..4ee865418 --- /dev/null +++ b/src/calendar/test/index.spec.js @@ -0,0 +1,50 @@ +import Calendar from '..'; +import { mount } from '../../../test'; +import { getNextDay, getPrevDay } from '../utils'; +import { minDate, maxDate } from './utils'; + +test('should reset to default date when calling reset method', async () => { + const defaultDate = [minDate, getNextDay(minDate)]; + const wrapper = mount(Calendar, { + props: { + minDate, + maxDate, + type: 'range', + poppable: false, + lazyRender: false, + defaultDate, + }, + }); + + const days = wrapper.findAll('.van-calendar__day'); + await days[15].trigger('click'); + await days[18].trigger('click'); + + wrapper.vm.reset(); + + wrapper.find('.van-calendar__confirm').trigger('click'); + expect(wrapper.emitted('confirm')[0][0]).toEqual(defaultDate); +}); + +test('should reset to specific date when calling reset method with date', async () => { + const wrapper = mount(Calendar, { + props: { + minDate, + maxDate, + type: 'range', + poppable: false, + lazyRender: false, + defaultDate: [minDate, getNextDay(minDate)], + }, + }); + + const days = wrapper.findAll('.van-calendar__day'); + await days[15].trigger('click'); + await days[18].trigger('click'); + + const newDate = [getPrevDay(maxDate), maxDate]; + wrapper.vm.reset(newDate); + + wrapper.find('.van-calendar__confirm').trigger('click'); + expect(wrapper.emitted('confirm')[0][0]).toEqual(newDate); +});