Commit 8783c3e9 authored by cinwell.li's avatar cinwell.li Committed by FuryBean

DatePicker: improve test (#659)

parent 32d3ad53
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<input <input
placeholder="开始日期" placeholder="开始日期"
class="el-date-range-picker__editor" class="el-date-range-picker__editor"
v-model.lazy="leftVisibleDate" :value="leftVisibleDate"
@input="handleDateInput($event, 'min')" @input="handleDateInput($event, 'min')"
@change="handleDateChange($event, 'min')"/> @change="handleDateChange($event, 'min')"/>
</span> </span>
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
<input <input
placeholder="开始时间" placeholder="开始时间"
class="el-date-range-picker__editor" class="el-date-range-picker__editor"
v-model.lazy="leftVisibleTime" :value="leftVisibleTime"
@focus="leftTimePickerVisible = !leftTimePickerVisible" @focus="leftTimePickerVisible = !leftTimePickerVisible"
@change="handleTimeChange($event, 'min')"/> @change="handleTimeChange($event, 'min')"/>
<time-picker <time-picker
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
ref="leftInput" ref="leftInput"
placeholder="结束日期" placeholder="结束日期"
class="el-date-range-picker__editor" class="el-date-range-picker__editor"
v-model.lazy="rightVisibleDate" :value="rightVisibleDate"
:readonly="!minDate" :readonly="!minDate"
@input="handleDateInput($event, 'max')" @input="handleDateInput($event, 'max')"
@change="handleDateChange($event, 'max')" /> @change="handleDateChange($event, 'max')" />
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
ref="rightInput" ref="rightInput"
placeholder="结束时间" placeholder="结束时间"
class="el-date-range-picker__editor" class="el-date-range-picker__editor"
v-model.lazy="rightVisibleTime" :value="rightVisibleTime"
@focus="minDate && (rightTimePickerVisible = !rightTimePickerVisible)" @focus="minDate && (rightTimePickerVisible = !rightTimePickerVisible)"
:readonly="!minDate" :readonly="!minDate"
@change="handleTimeChange($event, 'max')" /> @change="handleTimeChange($event, 'max')" />
...@@ -177,7 +177,7 @@ ...@@ -177,7 +177,7 @@
}, },
rightVisibleDate() { rightVisibleDate() {
return formatDate(this.maxDate); return formatDate(this.maxDate || this.minDate);
}, },
leftVisibleTime() { leftVisibleTime() {
...@@ -188,60 +188,6 @@ ...@@ -188,60 +188,6 @@
return formatDate(this.maxDate, 'HH:mm:ss'); return formatDate(this.maxDate, 'HH:mm:ss');
}, },
leftHours: {
get() {
return this.date.getHours();
},
set(hours) {
this.date.setHours(hours);
}
},
leftMinutes: {
get() {
return this.date.getMinutes();
},
set(minutes) {
this.date.setMinutes(minutes);
}
},
leftSeconds: {
get() {
return this.date.getSeconds();
},
set(seconds) {
this.date.setSeconds(seconds);
}
},
rightHours: {
get() {
return this.rightDate.getHours();
},
set(hours) {
this.rightDate.setHours(hours);
}
},
rightMinutes: {
get() {
return this.rightDate.getMinutes();
},
set(minutes) {
this.rightDate.setMinutes(minutes);
}
},
rightSeconds: {
get() {
return this.rightDate.getSeconds();
},
set(seconds) {
this.rightDate.setSeconds(seconds);
}
},
rightDate() { rightDate() {
const newDate = new Date(this.date); const newDate = new Date(this.date);
const month = newDate.getMonth(); const month = newDate.getMonth();
...@@ -396,6 +342,10 @@ ...@@ -396,6 +342,10 @@
this.maxDate = new Date(target.getTime()); this.maxDate = new Date(target.getTime());
} }
} }
const l2r = type === 'min' ? 'left' : 'right';
this.$refs[l2r + 'timepicker'].value = target;
this[l2r + 'TimePickerVisible'] = false;
} }
}, },
......
...@@ -111,7 +111,7 @@ ...@@ -111,7 +111,7 @@
<a <a
href="JavaScript:" href="JavaScript:"
class="el-picker-panel__link-btn" class="el-picker-panel__link-btn"
@click="changeToToday">{{ $t('datepicker.now') }}</a> @click="changeToNow">{{ $t('datepicker.now') }}</a>
<button <button
type="button" type="button"
class="el-picker-panel__btn" class="el-picker-panel__btn"
...@@ -127,6 +127,7 @@ ...@@ -127,6 +127,7 @@
export default { export default {
watch: { watch: {
showTime(val) { showTime(val) {
/* istanbul ignore if */
if (!val) return; if (!val) return;
this.$nextTick(_ => { this.$nextTick(_ => {
const inputElm = this.$refs.input; const inputElm = this.$refs.input;
...@@ -156,6 +157,7 @@ ...@@ -156,6 +157,7 @@
selectionMode(newVal) { selectionMode(newVal) {
if (newVal === 'month') { if (newVal === 'month') {
/* istanbul ignore next */
if (this.currentView !== 'year' || this.currentView !== 'month') { if (this.currentView !== 'year' || this.currentView !== 'month') {
this.currentView = 'month'; this.currentView = 'month';
} }
...@@ -163,6 +165,7 @@ ...@@ -163,6 +165,7 @@
}, },
date(newVal) { date(newVal) {
/* istanbul ignore next */
if (!this.year) { if (!this.year) {
this.year = newVal.getFullYear(); this.year = newVal.getFullYear();
this.month = newVal.getMonth(); this.month = newVal.getMonth();
...@@ -187,13 +190,14 @@ ...@@ -187,13 +190,14 @@
this.currentView = 'year'; this.currentView = 'year';
}, },
handleLabelClick() { // XXX: 没用到
if (this.currentView === 'date') { // handleLabelClick() {
this.showMonthPicker(); // if (this.currentView === 'date') {
} else if (this.currentView === 'month') { // this.showMonthPicker();
this.showYearPicker(); // } else if (this.currentView === 'month') {
} // this.showYearPicker();
}, // }
// },
prevMonth() { prevMonth() {
this.month--; this.month--;
...@@ -301,7 +305,7 @@ ...@@ -301,7 +305,7 @@
this.resetDate(); this.resetDate();
}, },
changeToToday() { changeToNow() {
this.date.setTime(+new Date()); this.date.setTime(+new Date());
this.$emit('pick', new Date(this.date.getTime())); this.$emit('pick', new Date(this.date.getTime()));
this.resetDate(); this.resetDate();
...@@ -416,50 +420,6 @@ ...@@ -416,50 +420,6 @@
return startYear + ' ' + yearTranslation + '-' + (startYear + 9) + ' ' + yearTranslation; return startYear + ' ' + yearTranslation + '-' + (startYear + 9) + ' ' + yearTranslation;
} }
return this.year + ' ' + yearTranslation; return this.year + ' ' + yearTranslation;
},
hours: {
get() {
return this.date.getHours();
},
set(hours) {
this.date.setHours(hours);
}
},
minutes: {
get() {
return this.date.getMinutes();
},
set(minutes) {
this.date.setMinutes(minutes);
}
},
seconds: {
get() {
return this.date.getSeconds();
},
set(seconds) {
this.date.setSeconds(seconds);
}
},
timeText() {
const hours = this.hours;
const minutes = this.minutes;
return (hours < 10 ? '0' + hours : hours) + ':' + (minutes < 10 ? '0' + minutes : minutes);
},
label() {
const year = this.year;
const month = this.month + 1;
if (this.currentView === 'date') {
return year + ' / ' + month;
}
return year;
} }
} }
}; };
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
v-model.lazy="visualValue" /> v-model.lazy="visualValue" />
<span <span
@click="togglePicker" @click="pickerVisible = !pickerVisible"
class="el-date-editor__trigger el-icon" class="el-date-editor__trigger el-icon"
:class="[triggerClass]" :class="[triggerClass]"
v-if="haveTrigger"> v-if="haveTrigger">
...@@ -353,10 +353,6 @@ export default { ...@@ -353,10 +353,6 @@ export default {
} }
}, },
togglePicker() {
!this.pickerVisible ? this.showPicker() : this.hidePicker();
},
hidePicker() { hidePicker() {
if (this.picker) { if (this.picker) {
this.picker.resetView && this.picker.resetView(); this.picker.resetView && this.picker.resetView();
......
import { createTest, createVue } from '../util'; import { createTest, createVue, destroyVM, triggerEvent } from '../util';
import DatePicker from 'packages/date-picker'; import DatePicker from 'packages/date-picker';
const DELAY = 10;
describe('DatePicker', () => { describe('DatePicker', () => {
it('create', () => { it('create', () => {
const vm = createTest(DatePicker, { const vm = createTest(DatePicker, {
...@@ -38,14 +40,12 @@ describe('DatePicker', () => { ...@@ -38,14 +40,12 @@ describe('DatePicker', () => {
expect(spans[0].textContent).to.include(date.getFullYear()); expect(spans[0].textContent).to.include(date.getFullYear());
expect(spans[1].textContent).to.include(date.getMonth() + 1); expect(spans[1].textContent).to.include(date.getMonth() + 1);
$el.querySelector('.el-date-picker__prev-btn.el-icon-d-arrow-left').click(); $el.querySelector('.el-date-picker__prev-btn.el-icon-d-arrow-left').click();
// click 5 let count = 20;
let count = 5;
while (--count) { while (--count) {
arrowLeftElm.click(); arrowLeftElm.click();
} }
// click 3 count = 18;
count = 3;
while (--count) { while (--count) {
arrowRightElm.click(); arrowRightElm.click();
} }
...@@ -57,8 +57,59 @@ describe('DatePicker', () => { ...@@ -57,8 +57,59 @@ describe('DatePicker', () => {
expect(vm.value).to.exist; expect(vm.value).to.exist;
}); });
done(); done();
}, 150); }, DELAY);
}, 150); }, DELAY);
});
describe('keydown', () => {
let vm, input;
let keyDown = function(el, keyCode) {
const evt = document.createEvent('Events');
evt.initEvent('keydown', true, true);
evt.keyCode = keyCode;
el.dispatchEvent(evt);
};
beforeEach(done => {
vm = createTest(DatePicker, true);
input = vm.$el.querySelector('input');
input.blur();
input.focus();
setTimeout(done, DELAY);
});
afterEach(() => destroyVM(vm));
it('tab', () => {
keyDown(input, 9);
expect(vm.pickerVisible).to.false;
});
it('enter', () => {
input.value = '2000-10-1';
keyDown(input, 13);
expect(vm.pickerVisible).to.false;
expect(vm.picker.value.getFullYear()).to.equal(2000);
expect(vm.picker.value.getMonth()).to.equal(9);
expect(vm.picker.value.getDate()).to.equal(1);
});
it('left', () => {
input.value = '2000-10-1';
keyDown(input, 13);
input.focus();
keyDown(input, 37);
expect(input.selectionStart > 0).to.true;
});
it('right', () => {
input.value = '2000-10-1';
keyDown(input, 13);
input.focus();
keyDown(input, 39);
expect(input.selectionStart > 0).to.true;
});
}); });
it('type:month', done => { it('type:month', done => {
...@@ -74,11 +125,9 @@ describe('DatePicker', () => { ...@@ -74,11 +125,9 @@ describe('DatePicker', () => {
expect(vm.picker.$el.querySelector('.el-month-table').style.display).to.be.empty; expect(vm.picker.$el.querySelector('.el-month-table').style.display).to.be.empty;
expect(vm.picker.$el.querySelector('.el-year-table').style.display).to.be.equal('none'); expect(vm.picker.$el.querySelector('.el-year-table').style.display).to.be.equal('none');
vm.picker.$el.querySelector('.el-month-table a.cell').click(); vm.picker.$el.querySelector('.el-month-table a.cell').click();
setTimeout(_ => { expect(vm.pickerVisible).to.false;
expect(vm.picker.$el.style.display).to.be.equal('none'); done();
done(); }, DELAY);
}, 500);
}, 150);
}); });
it('type:year', done => { it('type:year', done => {
...@@ -93,45 +142,162 @@ describe('DatePicker', () => { ...@@ -93,45 +142,162 @@ describe('DatePicker', () => {
setTimeout(_ => { setTimeout(_ => {
expect(vm.picker.$el.querySelector('.el-year-table').style.display).to.empty; expect(vm.picker.$el.querySelector('.el-year-table').style.display).to.empty;
expect(vm.picker.$el.querySelector('.el-month-table').style.display).to.be.equal('none'); expect(vm.picker.$el.querySelector('.el-month-table').style.display).to.be.equal('none');
vm.picker.$el.querySelector('.el-icon-d-arrow-left').click();
vm.picker.$el.querySelector('.el-icon-d-arrow-right').click(); const leftBtn = vm.picker.$el.querySelector('.el-icon-d-arrow-left');
const rightBtn = vm.picker.$el.querySelector('.el-icon-d-arrow-right');
let count = 20;
while (--count) {
leftBtn.click();
}
count = 18;
while (--count) {
rightBtn.click();
}
vm.picker.$el.querySelector('.el-year-table a.cell').click(); vm.picker.$el.querySelector('.el-year-table a.cell').click();
setTimeout(_ => { expect(vm.pickerVisible).to.false;
expect(vm.picker.$el.style.display).to.be.equal('none'); done();
expect(vm.picker.date).to.exist; }, DELAY);
done();
}, 500);
}, 150);
}); });
it('type:datetime', done => { describe('type:datetime', () => {
const vm = createTest(DatePicker, { let vm;
type: 'datetime' beforeEach(done => {
}, true); vm = createTest(DatePicker, {
const input = vm.$el.querySelector('input'); type: 'datetime'
}, true);
const input = vm.$el.querySelector('input');
input.blur(); input.blur();
input.focus(); input.focus();
setTimeout(_ => { setTimeout(done, DELAY);
});
afterEach(() => destroyVM(vm));
it('create', () => {
expect(vm.picker.$el.querySelector('.el-time-panel')).to.ok; expect(vm.picker.$el.querySelector('.el-time-panel')).to.ok;
done(); });
}, 150);
it('click now button', done => {
const date = new Date(1999, 10, 10, 10, 10);
vm.picker.date = new Date(date);
vm.picker.$el.querySelector('.el-picker-panel__link-btn').click();
setTimeout(_ => {
expect(vm.picker.date > date).to.true;
done();
}, DELAY);
});
it('click timepicker', done => {
const input = vm.picker.$el.querySelectorAll('.el-date-picker__editor-wrap input')[1];
input.blur();
input.focus();
input.blur();
setTimeout(_ => {
expect(vm.picker.$el.querySelector('.el-time-panel')).to.have.deep.property('style.display').to.equal('');
done();
}, 400);
});
it('input timepicker', done => {
const input = vm.picker.$el.querySelectorAll('.el-date-picker__editor-wrap input')[1];
input.value = '20:30:33';
triggerEvent(input, 'change');
setTimeout(_ => {
expect(vm.picker.date.getHours()).to.equal(20);
expect(vm.picker.date.getMinutes()).to.equal(30);
expect(vm.picker.date.getSeconds()).to.equal(33);
done();
}, DELAY);
});
it('input date', done => {
const input = vm.picker.$el.querySelector('.el-date-picker__editor-wrap input');
input.value = '2017-2-2';
triggerEvent(input, 'change');
setTimeout(_ => {
expect(vm.picker.date.getFullYear()).to.equal(2017);
expect(vm.picker.date.getMonth()).to.equal(1);
expect(vm.picker.date.getDate()).to.equal(2);
done();
}, DELAY);
});
it('select time', done => {
const input = vm.picker.$el.querySelectorAll('.el-date-picker__editor-wrap input')[1];
input.blur();
input.focus();
input.blur();
setTimeout(_ => {
const button = vm.picker.$el.querySelector('.el-time-panel .confirm');
button.click();
setTimeout(_ => {
expect(input.value).to.exist;
done();
}, DELAY);
}, DELAY);
});
}); });
it('type:week', done => { describe('type:week', () => {
const vm = createTest(DatePicker, { let vm;
type: 'week'
}, true);
const input = vm.$el.querySelector('input');
input.blur(); beforeEach(done => {
input.focus(); vm = createTest(DatePicker, {
type: 'week'
}, true);
const input = vm.$el.querySelector('input');
setTimeout(_ => { input.blur();
input.focus();
setTimeout(done, DELAY);
});
afterEach(() => destroyVM(vm));
it('create', () => {
expect(vm.picker.$el.querySelector('.is-week-mode')).to.be.ok; expect(vm.picker.$el.querySelector('.is-week-mode')).to.be.ok;
done(); });
}, 150);
it('click cell', done => {
vm.picker.$el.querySelector('.el-date-table__row .available').click();
setTimeout(_ => {
expect(vm.picker.week).to.exist;
done();
}, DELAY);
});
it('click year label', () => {
vm.picker.$el.querySelector('.el-date-picker__header-label').click();
expect(vm.picker.currentView).to.equal('year');
});
it('click month label', () => {
vm.picker.$el.querySelectorAll('.el-date-picker__header-label')[1].click();
expect(vm.picker.currentView).to.equal('month');
});
it('select month', done => {
vm.picker.$el.querySelectorAll('.el-date-picker__header-label')[1].click();
setTimeout(_ => {
vm.picker.$el.querySelector('.el-month-table .cell').click();
setTimeout(_ => {
expect(vm.picker.$el.querySelector('.el-date-table.is-week-mode').style.display).to.equal('');
done();
}, DELAY);
}, DELAY);
});
}); });
it('type:daterange', done => { it('type:daterange', done => {
...@@ -157,32 +323,244 @@ describe('DatePicker', () => { ...@@ -157,32 +323,244 @@ describe('DatePicker', () => {
expect(maxDate).to.exist; expect(maxDate).to.exist;
expect(maxDate > minDate).to.true; expect(maxDate > minDate).to.true;
done(); done();
}, 150); }, DELAY);
}, 150); }, DELAY);
}); });
it('type:datetimerange', done => { describe('type:datetimerange', () => {
const vm = createTest(DatePicker, { let vm;
type: 'datetimerange' beforeEach(done => {
}, true); vm = createTest(DatePicker, {
const input = vm.$el.querySelector('input'); type: 'datetimerange',
value: [new Date(2000, 10, 10, 10, 10), new Date(2000, 10, 11, 10, 10)]
}, true);
const input = vm.$el.querySelector('input');
input.blur(); input.blur();
input.focus(); input.focus();
setTimeout(_ => { setTimeout(done, DELAY);
});
afterEach(() => destroyVM(vm));
it('create', () => {
expect(Array.prototype.slice.call(vm.picker.$el.querySelectorAll('.el-time-panel'))).to.length(2); expect(Array.prototype.slice.call(vm.picker.$el.querySelectorAll('.el-time-panel'))).to.length(2);
done(); });
}, 150);
it('click timepicker', done => {
const input = vm.picker.$el.querySelectorAll('.el-date-range-picker__editors-wrap input')[1];
input.blur();
input.focus();
input.blur();
setTimeout(_ => {
expect(vm.picker.$el.querySelector('.el-date-range-picker__time-picker-wrap .el-time-panel')).to.have.deep.property('style.display').to.equal('');
done();
}, 400);
});
it('click timepicker in right', done => {
const input = vm.picker.$el.querySelectorAll('.el-date-range-picker__editors-wrap input')[3];
input.blur();
input.focus();
input.blur();
setTimeout(_ => {
expect(vm.picker.$el.querySelectorAll('.el-date-range-picker__time-picker-wrap .el-time-panel')[1]).to.have.deep.property('style.display').to.equal('');
done();
}, 400);
});
it('input timepicker', done => {
const input = vm.picker.$el.querySelectorAll('.el-date-range-picker__editors-wrap input')[1];
input.value = '10:22:14';
triggerEvent(input, 'change');
setTimeout(_ => {
expect(vm.picker.minDate.getHours()).to.equal(10);
expect(vm.picker.minDate.getMinutes()).to.equal(22);
expect(vm.picker.minDate.getSeconds()).to.equal(14);
done();
}, DELAY);
});
it('input timepicker in right', done => {
const input = vm.picker.$el.querySelectorAll('.el-date-range-picker__editors-wrap input')[3];
input.value = '10:22:14';
triggerEvent(input, 'change');
setTimeout(_ => {
expect(vm.picker.maxDate.getHours()).to.equal(10);
expect(vm.picker.maxDate.getMinutes()).to.equal(22);
expect(vm.picker.maxDate.getSeconds()).to.equal(14);
done();
}, DELAY);
});
it('select daterange', done => {
const pickers = vm.picker.$el.querySelectorAll('.el-date-range-picker__content');
const leftCell = pickers[0].querySelector('td.available');
const rightCell = pickers[1].querySelector('td.available');
triggerEvent(leftCell, 'mousemove', true);
triggerEvent(leftCell, 'click', true);
setTimeout(_ => {
triggerEvent(rightCell, 'mousemove', true);
triggerEvent(rightCell, 'click', true);
setTimeout(_ => {
const { minDate, maxDate } = vm.picker;
expect(maxDate - minDate).to.equal(2678400000); // one month
done();
}, DELAY);
}, DELAY);
});
it('prev/next month button', done => {
const leftBtn = vm.picker.$el.querySelector('.is-left .el-icon-arrow-left');
const rightBtn = vm.picker.$el.querySelector('.is-right .el-icon-arrow-right');
const left = vm.picker.$el.querySelector('.is-left .el-date-range-picker__header');
const right = vm.picker.$el.querySelector('.is-right .el-date-range-picker__header');
const leftText = left.textContent.match(/\d+/g);
const rightText = right.textContent.match(/\d+/g);
let count = 20;
while (--count) {
leftBtn.click();
}
count = 18;
while (--count) {
rightBtn.click();
}
setTimeout(_ => {
const newLeft = left.textContent.match(/\d+/g);
const newRight = right.textContent.match(/\d+/g);
expect(leftText[1] - newLeft[1]).to.equal(2);
expect(leftText[0] - newLeft[0]).to.equal(0);
expect(rightText[1] - newRight[1]).to.equal(2);
expect(rightText[0] - newRight[0]).to.equal(0);
done();
}, DELAY);
});
it('prev/next year button', done => {
const leftBtn = vm.picker.$el.querySelector('.is-left .el-icon-d-arrow-left');
const rightBtn = vm.picker.$el.querySelector('.is-right .el-icon-d-arrow-right');
const left = vm.picker.$el.querySelector('.is-left .el-date-range-picker__header');
const right = vm.picker.$el.querySelector('.is-right .el-date-range-picker__header');
const leftText = left.textContent.match(/\d+/g);
const rightText = right.textContent.match(/\d+/g);
let count = 20;
while (--count) {
leftBtn.click();
}
count = 18;
while (--count) {
rightBtn.click();
}
setTimeout(_ => {
const newLeft = left.textContent.match(/\d+/g);
const newRight = right.textContent.match(/\d+/g);
expect(leftText[1] - newLeft[1]).to.equal(0);
expect(leftText[0] - newLeft[0]).to.equal(2);
expect(rightText[1] - newRight[1]).to.equal(0);
expect(rightText[0] - newRight[0]).to.equal(2);
done();
}, DELAY);
});
it('input date', done => {
const input = vm.picker.$el.querySelector('.el-date-range-picker__editors-wrap input');
const pickers = vm.picker.$el.querySelectorAll('.el-date-range-picker__content');
const leftCell = pickers[0].querySelector('td.available');
const rightCell = pickers[1].querySelector('td.available');
triggerEvent(leftCell, 'mousemove', true);
triggerEvent(leftCell, 'click', true);
setTimeout(_ => {
triggerEvent(rightCell, 'mousemove', true);
triggerEvent(rightCell, 'click', true);
setTimeout(_ => {
triggerEvent(input, 'input');
input.value = '1989-6-4';
triggerEvent(input, 'change');
setTimeout(_ => {
const minDate = vm.picker.minDate;
expect(minDate.getFullYear()).to.equal(1989);
expect(minDate.getMonth()).to.equal(5);
expect(minDate.getDate()).to.equal(4);
done();
}, DELAY);
}, DELAY);
}, DELAY);
});
it('input date when minDate > maxDate', done => {
const input = vm.picker.$el.querySelector('.el-date-range-picker__editors-wrap input');
const input2 = vm.picker.$el.querySelectorAll('.el-date-range-picker__editors-wrap input')[2];
const pickers = vm.picker.$el.querySelectorAll('.el-date-range-picker__content');
const leftCell = pickers[0].querySelector('td.available');
const rightCell = pickers[1].querySelector('td.available');
triggerEvent(leftCell, 'mousemove', true);
triggerEvent(leftCell, 'click', true);
setTimeout(_ => {
triggerEvent(rightCell, 'mousemove', true);
triggerEvent(rightCell, 'click', true);
setTimeout(_ => {
triggerEvent(input2, 'input');
input2.value = '1988-6-4';
triggerEvent(input2, 'change');
setTimeout(_ => {
triggerEvent(input, 'input');
input.value = '1989-6-4';
triggerEvent(input, 'change');
setTimeout(_ => {
expect(vm.picker.maxDate > vm.picker.minDate).to.true;
done();
}, DELAY);
}, DELAY);
}, DELAY);
}, DELAY);
});
it('select time', done => {
const input = vm.picker.$el.querySelectorAll('.el-date-range-picker__editors-wrap input')[1];
input.blur();
input.focus();
input.blur();
setTimeout(_ => {
const button = vm.picker.$el.querySelector('.el-date-range-picker__time-picker-wrap .el-time-panel .confirm');
button.click();
setTimeout(_ => {
expect(input.value).to.exist;
done();
}, DELAY);
}, DELAY);
});
}); });
it('picker-options:shortcuts', done => { it('picker-options:shortcuts', done => {
let test;
const vm = createTest(DatePicker, { const vm = createTest(DatePicker, {
pickerOptions: { pickerOptions: {
shortcuts: [ shortcuts: [
{ {
text: '今天', text: '今天',
onClick(picker) { onClick(picker) {
test = true;
picker.$emit('pick', new Date()); picker.$emit('pick', new Date());
} }
} }
...@@ -195,28 +573,61 @@ describe('DatePicker', () => { ...@@ -195,28 +573,61 @@ describe('DatePicker', () => {
input.focus(); input.focus();
setTimeout(_ => { setTimeout(_ => {
expect(vm.picker.$el.querySelector('.el-picker-panel__shortcut').textContent).to.be.equal('今天'); const shortcut = vm.picker.$el.querySelector('.el-picker-panel__shortcut');
expect(shortcut.textContent).to.be.equal('今天');
expect(vm.picker.$el.querySelector('.el-picker-panel__sidebar')).to.be.ok; expect(vm.picker.$el.querySelector('.el-picker-panel__sidebar')).to.be.ok;
done();
}, 150); shortcut.click();
setTimeout(_ => {
expect(test).to.true;
done();
}, DELAY);
}, DELAY);
}); });
it('picker-options:disabledDate', done => { describe('picker-options:disabledDate', () => {
const vm = createTest(DatePicker, { let vm;
pickerOptions: { beforeEach(done => {
disabledDate(time) { vm = createTest(DatePicker, {
return time.getTime() < Date.now() - 8.64e7; value: new Date(),
pickerOptions: {
disabledDate(time) {
return time.getTime() < Date.now() - 8.64e7;
}
} }
} }, true);
}, true); const input = vm.$el.querySelector('input');
const input = vm.$el.querySelector('input');
input.blur(); input.blur();
input.focus(); input.focus();
setTimeout(_ => { setTimeout(done, DELAY);
});
afterEach(() => destroyVM(vm));
it('create', () => {
expect(vm.picker.$el.querySelector('.disabled')).to.be.ok; expect(vm.picker.$el.querySelector('.disabled')).to.be.ok;
done(); });
}, 150);
it('set disabled value', done => {
const date = new Date(1999, 10, 10, 10, 10, 10);
vm.picker.value = date;
setTimeout(_ => {
expect(vm.picker.date > date).to.true;
done();
}, DELAY);
});
it('set value', done => {
const date = new Date(3000, 10, 10, 10, 10, 10);
vm.picker.value = date;
setTimeout(_ => {
expect(vm.picker.date === date).to.true;
done();
}, DELAY);
});
}); });
}); });
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment