Slider: improve test (#554)

pull/567/head
杨奕 2016-10-21 14:56:14 +08:00 committed by FuryBean
parent a8616da3d0
commit 7bc214ce2f
3 changed files with 33 additions and 12 deletions

View File

@ -4,7 +4,7 @@
v-model="inputValue" v-model="inputValue"
v-if="showInput" v-if="showInput"
class="el-slider__input" class="el-slider__input"
@keyup.native="onInputChange()" @keyup.native="onInputChange"
ref="input" ref="input"
:step="step" :step="step"
:min="min" :min="min"

View File

@ -1,6 +1,5 @@
import { createTest, createVue } from '../util'; import { createTest, createVue, triggerEvent } from '../util';
import Slider from 'packages/slider'; import Slider from 'packages/slider';
import Vue from 'vue';
describe('Slider', () => { describe('Slider', () => {
it('create', () => { it('create', () => {
@ -26,10 +25,10 @@ describe('Slider', () => {
}, true); }, true);
setTimeout(() => { setTimeout(() => {
vm.value = 40; vm.value = 40;
Vue.nextTick(() => { vm.$nextTick(() => {
expect(vm.value).to.equal(50); expect(vm.value).to.equal(50);
vm.value = 120; vm.value = 120;
Vue.nextTick(() => { vm.$nextTick(() => {
expect(vm.value).to.equal(100); expect(vm.value).to.equal(100);
done(); done();
}); });
@ -38,12 +37,30 @@ describe('Slider', () => {
}); });
it('show tooltip', () => { it('show tooltip', () => {
const vm = createTest(Slider); const vm = createVue({
template: `
<div>
<el-slider v-model="value">
</el-slider>
</div>
`,
data() {
return {
value: 0
};
}
}, true);
const slider = vm.$children[0];
const popup = vm.$el.querySelector('.el-slider__pop'); const popup = vm.$el.querySelector('.el-slider__pop');
vm.onDragStart({ clientX: 0 }); slider.onDragStart({ clientX: 0 });
expect(getComputedStyle(popup).display).to.not.equal('none'); vm.$nextTick(() => {
vm.onDragEnd(); expect(popup.style.display).to.not.equal('none');
slider.onDragEnd();
setTimeout(() => {
expect(popup.style.display).to.equal('none'); expect(popup.style.display).to.equal('none');
}, 350);
});
}); });
it('drag', done => { it('drag', done => {
@ -109,6 +126,7 @@ describe('Slider', () => {
} }
}, true); }, true);
setTimeout(() => { setTimeout(() => {
triggerEvent(vm.$el.querySelector('.el-input-number'), 'keyup');
const inputNumber = vm.$el.querySelector('.el-input-number').__vue__; const inputNumber = vm.$el.querySelector('.el-input-number').__vue__;
inputNumber.currentValue = 40; inputNumber.currentValue = 40;
setTimeout(() => { setTimeout(() => {

View File

@ -49,13 +49,16 @@ exports.createTest = function(Compo, propsData = {}, mounted = false) {
/** /**
* 触发一个事件 * 触发一个事件
* mouseenter, mouseleave, mouseover * mouseenter, mouseleave, mouseover, keyup
* @param {Element} elm * @param {Element} elm
* @param {EventName} name * @param {EventName} name
* @param {options} opts * @param {options} opts
*/ */
exports.triggerEvent = function(elm, name, opts) { exports.triggerEvent = function(elm, name, opts) {
const evt = document.createEvent('MouseEvents'); const isMouseEvent = /^mouse/.test(name);
const isKeyEvent = /^key/.test(name);
if (!isMouseEvent && !isKeyEvent) return;
const evt = document.createEvent(isMouseEvent ? 'MouseEvents' : 'KeyboardEvent');
evt.initEvent(name, ...opts); evt.initEvent(name, ...opts);
elm.dispatchEvent elm.dispatchEvent