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