mirror of
https://github.com/youzan/vant.git
synced 2025-10-17 08:37:23 +00:00
170 lines
4.0 KiB
JavaScript
170 lines
4.0 KiB
JavaScript
import Calendar from '..';
|
|
import { mount, later } from '../../../test';
|
|
import { minDate, maxDate, formatRange, formatDate } from './utils';
|
|
|
|
test('max-range prop when type is range and showConfirm is false', async () => {
|
|
const wrapper = mount(Calendar, {
|
|
propsData: {
|
|
type: 'range',
|
|
minDate,
|
|
maxDate,
|
|
maxRange: 3,
|
|
poppable: false,
|
|
showConfirm: false,
|
|
},
|
|
});
|
|
|
|
await later();
|
|
|
|
const days = wrapper.findAll('.van-calendar__day');
|
|
days.at(12).trigger('click');
|
|
days.at(18).trigger('click');
|
|
|
|
expect(formatRange(wrapper.emitted('select')[0][0])).toEqual('2010/1/13-');
|
|
expect(formatRange(wrapper.emitted('select')[1][0])).toEqual(
|
|
'2010/1/13-2010/1/19'
|
|
);
|
|
expect(wrapper.emitted('confirm')).toBeFalsy();
|
|
});
|
|
|
|
test('max-range prop when type is range and showConfirm is true', async () => {
|
|
const wrapper = mount(Calendar, {
|
|
propsData: {
|
|
type: 'range',
|
|
minDate,
|
|
maxDate,
|
|
maxRange: 3,
|
|
poppable: false,
|
|
},
|
|
});
|
|
|
|
await later();
|
|
|
|
const days = wrapper.findAll('.van-calendar__day');
|
|
days.at(12).trigger('click');
|
|
days.at(18).trigger('click');
|
|
|
|
expect(formatRange(wrapper.emitted('select')[0][0])).toEqual('2010/1/13-');
|
|
expect(formatRange(wrapper.emitted('select')[1][0])).toEqual(
|
|
'2010/1/13-2010/1/15'
|
|
);
|
|
expect(wrapper.emitted('confirm')).toBeFalsy();
|
|
});
|
|
|
|
test('max-range prop when type is multiple', async () => {
|
|
const wrapper = mount(Calendar, {
|
|
propsData: {
|
|
type: 'multiple',
|
|
minDate,
|
|
maxDate,
|
|
maxRange: 2,
|
|
poppable: false,
|
|
showConfirm: false,
|
|
},
|
|
});
|
|
|
|
await later();
|
|
|
|
const days = wrapper.findAll('.van-calendar__day');
|
|
days.at(13).trigger('click');
|
|
days.at(14).trigger('click');
|
|
|
|
expect(wrapper.emitted('select').length).toEqual(1);
|
|
});
|
|
|
|
test('show-title prop', () => {
|
|
const wrapper = mount(Calendar, {
|
|
propsData: {
|
|
value: true,
|
|
},
|
|
});
|
|
|
|
expect(wrapper.contains('.van-calendar__header-title')).toBeTruthy();
|
|
wrapper.setProps({ showTitle: false });
|
|
expect(wrapper.contains('.van-calendar__header-title')).toBeFalsy();
|
|
});
|
|
|
|
test('show-subtitle prop', () => {
|
|
const wrapper = mount(Calendar, {
|
|
propsData: {
|
|
value: true,
|
|
},
|
|
});
|
|
|
|
expect(wrapper.contains('.van-calendar__header-subtitle')).toBeTruthy();
|
|
wrapper.setProps({ showSubtitle: false });
|
|
expect(wrapper.contains('.van-calendar__header-subtitle')).toBeFalsy();
|
|
});
|
|
|
|
test('hide close icon when there is no title', () => {
|
|
const wrapper = mount(Calendar, {
|
|
propsData: {
|
|
value: true,
|
|
},
|
|
});
|
|
|
|
expect(wrapper.contains('.van-popup__close-icon')).toBeTruthy();
|
|
|
|
wrapper.setProps({
|
|
showTitle: false,
|
|
showSubtitle: false,
|
|
});
|
|
expect(wrapper.contains('.van-popup__close-icon')).toBeFalsy();
|
|
});
|
|
|
|
test('allow-same-day prop', async () => {
|
|
const select = jest.fn();
|
|
const wrapper = mount(Calendar, {
|
|
propsData: {
|
|
type: 'range',
|
|
minDate,
|
|
maxDate,
|
|
poppable: false,
|
|
},
|
|
listeners: {
|
|
select,
|
|
},
|
|
});
|
|
|
|
await later();
|
|
|
|
const days = wrapper.findAll('.van-calendar__day');
|
|
days.at(9).trigger('click');
|
|
days.at(9).trigger('click');
|
|
|
|
expect(select).toHaveBeenLastCalledWith([minDate, null]);
|
|
|
|
wrapper.setProps({
|
|
allowSameDay: true,
|
|
});
|
|
|
|
days.at(9).trigger('click');
|
|
expect(select).toHaveBeenLastCalledWith([minDate, minDate]);
|
|
});
|
|
|
|
test('min-date after current time', () => {
|
|
const wrapper = mount(Calendar, {
|
|
propsData: {
|
|
poppable: false,
|
|
minDate: new Date(2200, 0, 1),
|
|
maxDate: new Date(2200, 0, 2),
|
|
},
|
|
});
|
|
|
|
wrapper.find('.van-calendar__confirm').trigger('click');
|
|
expect(formatDate(wrapper.emitted('confirm')[0][0])).toEqual('2200/1/1');
|
|
});
|
|
|
|
test('min-date before current time', () => {
|
|
const wrapper = mount(Calendar, {
|
|
propsData: {
|
|
poppable: false,
|
|
minDate: new Date(1800, 0, 1),
|
|
maxDate: new Date(1800, 0, 2),
|
|
},
|
|
});
|
|
|
|
wrapper.find('.van-calendar__confirm').trigger('click');
|
|
expect(formatDate(wrapper.emitted('confirm')[0][0])).toEqual('1800/1/2');
|
|
});
|