Skip to content

Commit

Permalink
Merge pull request #650 from QingWei-Li/test/time-picker
Browse files Browse the repository at this point in the history
TimePicker: improve test
  • Loading branch information
Leopoldthecoder committed Oct 26, 2016
2 parents 63ca1eb + 468c70e commit 7181b36
Show file tree
Hide file tree
Showing 4 changed files with 131 additions and 8 deletions.
1 change: 1 addition & 0 deletions packages/date-picker/src/basic/time-spinner.vue
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
</ul>
</div>
<div
v-show="showSeconds"
@mouseenter="emitSelectRange('seconds')"
@mousewheel="handleScroll('second')"
class="el-time-spinner__wrapper"
Expand Down
1 change: 1 addition & 0 deletions packages/date-picker/src/panel/time-range.vue
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@
date.setHours(date.getHours() + 1);
const maxTime = time[1] || date;
if (minTime > maxTime) return clacTime();
return { minTime, maxTime };
};
Expand Down
8 changes: 2 additions & 6 deletions packages/date-picker/src/panel/time.vue
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@

<script type="text/babel">
import { limitRange } from '../util';
import Vue from 'vue';
import { $t } from '../util';
export default {
Expand Down Expand Up @@ -86,8 +85,8 @@
minutes: 0,
seconds: 0,
selectableRange: [],
currentDate: this.$options.defaultValue || this.date,
currentVisible: this.visible,
currentDate: this.$options.defaultValue || this.date || new Date(),
currentVisible: this.visible || false,
width: this.pickerWidth || 0
};
},
Expand Down Expand Up @@ -140,9 +139,6 @@
},
created() {
!this.currentDate && Vue.set(this, 'currentDate', new Date());
!this.currentVisible && Vue.set(this, 'currentVisible', false);
this.hours = this.currentDate.getHours();
this.minutes = this.currentDate.getMinutes();
this.seconds = this.currentDate.getSeconds();
Expand Down
129 changes: 127 additions & 2 deletions test/unit/specs/time-picker.spec.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { createTest } from '../util';
import { createTest, destroyVM } from '../util';
import TimePicker from 'packages/time-picker';
import Vue from 'vue';

Expand All @@ -10,6 +10,7 @@ describe('TimePicker', () => {
});
expect(vm.$el.querySelector('input').getAttribute('placeholder')).to.equal('test');
expect(vm.$el.querySelector('input').getAttribute('readonly')).to.ok;
destroyVM(vm);
});

it('format', () => {
Expand All @@ -18,6 +19,7 @@ describe('TimePicker', () => {
value: new Date(2016, 9, 10, 18, 40)
});
expect(vm.$el.querySelector('input').value).to.equal('18-40-00');
destroyVM(vm);
});

it('default value', done => {
Expand All @@ -37,6 +39,7 @@ describe('TimePicker', () => {
expect(times[0].textContent).to.equal('18');
expect(times[1].textContent).to.equal('40');
expect(times[2].textContent).to.equal('0');
destroyVM(vm);
done();
});
});
Expand Down Expand Up @@ -70,11 +73,80 @@ describe('TimePicker', () => {
expect(date.getHours()).to.equal(4);
expect(date.getMinutes()).to.equal(36);
expect(date.getSeconds()).to.equal(20);
destroyVM(vm);
done();
});
});
});

it('click cancel button', done => {
const vm = createTest(TimePicker, true);
const input = vm.$el.querySelector('input');

input.blur();
input.focus();

Vue.nextTick(_ => {
vm.picker.$el.querySelector('.el-time-panel__btn.cancel').click();

Vue.nextTick(_ => {
expect(vm.picker.currentDate).to.empty;
done();
});
});
});

it('click confirm button', done => {
const vm = createTest(TimePicker, true);
const input = vm.$el.querySelector('input');

input.blur();
input.focus();

Vue.nextTick(_ => {
vm.picker.$el.querySelector('.el-time-panel__btn.confirm').click();

Vue.nextTick(_ => {
expect(vm.picker.currentDate).to.exist;
done();
});
});
});

it('set format', done => {
const vm = createTest(TimePicker, {
pickerOptions: {
format: 'HH:mm'
}
}, true);
const input = vm.$el.querySelector('input');
input.blur();
input.focus();

setTimeout(_ => {
expect(vm.picker.$el.querySelectorAll('.el-time-spinner__wrapper')[2].style.display).to.equal('none');
destroyVM(vm);
done();
}, 20);
});

it('set format to empty', done => {
const vm = createTest(TimePicker, {
pickerOptions: {
format: ''
}
}, true);
const input = vm.$el.querySelector('input');
input.blur();
input.focus();

setTimeout(_ => {
expect(vm.picker.$el.querySelectorAll('.el-time-spinner__wrapper')[2].style.display).to.equal('none');
destroyVM(vm);
done();
}, 20);
});

it('selectableRange', done => {
const vm = createTest(TimePicker, {
pickerOptions: {
Expand All @@ -95,7 +167,60 @@ describe('TimePicker', () => {

hoursElm.querySelectorAll('.disabled')[0].click();
expect(disabledHours).to.not.include.members([18, 19, 20]);
destroyVM(vm);
done();
}, 20);
});
});

describe('TimePicker(range)', () => {
let vm;
beforeEach(done => {
vm = createTest(TimePicker, {
isRange: true,
value: [new Date(2016, 9, 10, 18, 40), new Date(2016, 9, 10, 19, 40)]
}, true);
const input = vm.$el.querySelector('input');

input.blur();
input.focus();
input.blur();
setTimeout(done, 20);
});

afterEach(() => destroyVM(vm));

it('create', () => {
expect(vm.picker.$el.querySelectorAll('.el-time-range-picker__cell')).to.length(2);
});

it('default value', () => {
expect(vm.picker.minTime.getTime()).to.equal(new Date(2016, 9, 10, 18, 40).getTime());
expect(vm.picker.maxTime.getTime()).to.equal(new Date(2016, 9, 10, 19, 40).getTime());
});

it('minTime < maxTime', done => {
const vm2 = createTest(TimePicker, {
isRange: true,
value: [new Date(2016, 9, 10, 21, 40), new Date(2016, 9, 10, 20, 40)]
}, true);
const input = vm2.$el.querySelector('input');

input.blur();
input.focus();
input.blur();
setTimeout(() => {
expect(vm2.picker.maxTime > vm2.picker.minTime).to.true;
destroyVM(vm2);
done();
}, 150);
}, 20);
});

it('click cancel button', done => {
vm.picker.$el.querySelector('.el-time-panel__btn.cancel').click();
Vue.nextTick(_ => {
expect(vm.picker.currentDate).to.empty;
done();
});
});
});

0 comments on commit 7181b36

Please sign in to comment.