import { mount } from '@vue/test-utils'; import { asyncExpect } from '@/tests/utils'; import moment from 'moment'; import DatePicker from '../'; import LocaleProvider from '../../locale-provider'; import locale from '../../locale-provider/zh_CN'; import { sleep } from '../../../tests/utils'; const { MonthPicker, WeekPicker } = DatePicker; describe('Picker format by locale', () => { const myLocale = { ...locale, DatePicker: { ...locale.DatePicker, dateFormat: 'YYYY 年 M 月 D 日', dateTimeFormat: 'YYYY 年 M 月 D 日 H 时 m 分 s 秒', weekFormat: 'YYYY 年 W 周', monthFormat: 'YYYY 年 M 月', }, }; const date = moment('2000-01-01', 'YYYY-MM-DD'); function matchPicker(name, Picker, props) { it(name, async () => { const wrapper = mount( { render() { return ( ); }, }, { sync: false }, ); await asyncExpect(() => { expect(wrapper.html()).toMatchSnapshot(); }); }); } matchPicker('date', DatePicker); matchPicker('dateTime', DatePicker, { showTime: true }); matchPicker('week', WeekPicker); matchPicker('month', MonthPicker); }); describe('MonthPicker and WeekPicker', () => { beforeEach(() => { document.body.innerHTML = ''; }); it('render MonthPicker', async () => { const birthday = moment('2000-01-01', 'YYYY-MM-DD').locale('zh-cn'); const wrapper = mount(MonthPicker, { props: { open: true }, sync: false }); await asyncExpect(() => { wrapper.setProps({ value: birthday }); }); await asyncExpect(() => { expect(document.body.innerHTML).toMatchSnapshot(); }); }); it('render WeekPicker', async () => { const birthday = moment('2000-01-01', 'YYYY-MM-DD').locale('zh-cn'); const wrapper = mount(WeekPicker, { props: { open: false }, sync: false }); await asyncExpect(() => { wrapper.setProps({ value: birthday, open: true }); }); await sleep(50); await asyncExpect(() => { expect(document.body.innerHTML).toMatchSnapshot(); }, 0); }); });