import { createTest, createVue, destroyVM, triggerEvent } from '../util'; import DatePicker from 'packages/date-picker'; const DELAY = 10; describe('DatePicker', () => { let vm; afterEach(() => { destroyVM(vm); }); it('create', () => { vm = createTest(DatePicker, { readonly: true, placeholder: '23333', format: 'HH-mm-ss' }); const input = vm.$el.querySelector('input'); expect(input.getAttribute('placeholder')).to.equal('23333'); expect(input.getAttribute('readonly')).to.equal('readonly'); }); it('select date', done => { vm = createVue({ template: ` `, data() { return { value: '' }; } }, true); const input = vm.$el.querySelector('input'); const date = new Date(); input.blur(); input.focus(); setTimeout(_ => { const $el = vm.$refs.compo.picker.$el; const spans = $el.querySelectorAll('.el-date-picker__header-label'); const arrowLeftElm = $el.querySelector('.el-date-picker__prev-btn.el-icon-arrow-left'); const arrowRightElm = $el.querySelector('.el-date-picker__next-btn.el-icon-arrow-right'); expect(spans[0].textContent).to.include(date.getFullYear()); expect(spans[1].textContent).to.include(date.getMonth() + 1); $el.querySelector('.el-date-picker__prev-btn.el-icon-d-arrow-left').click(); let count = 20; while (--count) { arrowLeftElm.click(); } count = 20; while (--count) { arrowRightElm.click(); } setTimeout(_ => { expect(spans[0].textContent).to.include(date.getFullYear() - 1); expect(spans[1].textContent).to.include(date.getMonth() + 1); $el.querySelector('td.available').click(); vm.$nextTick(_ => { expect(vm.value).to.exist; }); done(); }, DELAY); }, DELAY); }); it('clear value', done => { vm = createVue({ template: ` `, data() { return { value: '' }; } }, true); const input = vm.$el.querySelector('input'); input.focus(); setTimeout(_ => { const $el = vm.$refs.compo.picker.$el; $el.querySelector('td.available').click(); vm.$nextTick(_ => { vm.$el.querySelector('.el-input__icon').click(); setTimeout(_ => { expect(vm.value).to.empty; done(); }, DELAY); }); }, DELAY); }); it('disabled clear value', done => { vm = createVue({ template: ` `, data() { return { value: '' }; } }, true); const input = vm.$el.querySelector('input'); input.focus(); setTimeout(_ => { const $el = vm.$refs.compo.picker.$el; $el.querySelector('td.available').click(); vm.$nextTick(_ => { vm.$el.querySelector('.el-input__icon').click(); setTimeout(_ => { expect(vm.value).to.be.exist; done(); }, DELAY); }); }, DELAY); }); it('reset', done => { vm = createVue({ template: ` `, data() { return { value: '' }; } }, true); const input = vm.$el.querySelector('input'); input.blur(); input.focus(); setTimeout(_ => { const $el = vm.$refs.compo.picker.$el; $el.querySelector('.el-date-picker__next-btn.el-icon-arrow-right').click(); setTimeout(_ => { $el.querySelector('td.available').click(); vm.$nextTick(_ => { vm.value = ''; setTimeout(_ => { expect(vm.$refs.compo.picker.date.getDate()).to.equal(new Date().getDate()); done(); }, DELAY); }); }, DELAY); }, DELAY); }); it('focus', done => { vm = createVue({ template: ` ` }, true); const spy = sinon.spy(); vm.$refs.picker.$on('focus', spy); vm.$refs.picker.focus(); vm.$nextTick(_ => { expect(spy.calledOnce).to.be.true; done(); }); }); it('change event', done => { let inputValue; vm = createVue({ template: ` `, methods: { handleChange(val) { inputValue = val; } }, data() { return { value: '' }; } }, true); const input = vm.$el.querySelector('input'); input.blur(); input.focus(); setTimeout(_ => { const picker = vm.$refs.compo.picker; picker.$el.querySelector('td.available').click(); vm.$nextTick(_ => { const date = picker.date; let month = date.getMonth() + 1; if (month < 10) month = '0' + month; expect(inputValue).to.equal(`${date.getFullYear()}-${ month }`); done(); }); }, DELAY); }); describe('input event', () => { // mimic standard