mirror of https://github.com/ElemeFE/element
Test: add some test cases (#11453)
parent
40cf8ee0e6
commit
3e2e96313a
|
@ -169,7 +169,7 @@
|
||||||
} else if (keyCode === 13) { // enter选中
|
} else if (keyCode === 13) { // enter选中
|
||||||
this.triggerElm.focus();
|
this.triggerElm.focus();
|
||||||
target.click();
|
target.click();
|
||||||
if (!this.hideOnClick) { // click关闭
|
if (this.hideOnClick) { // click关闭
|
||||||
this.visible = false;
|
this.visible = false;
|
||||||
}
|
}
|
||||||
} else if ([9, 27].indexOf(keyCode) > -1) { // tab // esc
|
} else if ([9, 27].indexOf(keyCode) > -1) { // tab // esc
|
||||||
|
|
|
@ -191,4 +191,87 @@ describe('Dialog', () => {
|
||||||
}, 50);
|
}, 50);
|
||||||
}, 50);
|
}, 50);
|
||||||
});
|
});
|
||||||
|
it('click dialog to close', done => {
|
||||||
|
vm = createVue({
|
||||||
|
template: `
|
||||||
|
<div>
|
||||||
|
<el-dialog :title="title" :visible.sync="visible">
|
||||||
|
<span>这是一段信息</span>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
`,
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
title: 'dialog test',
|
||||||
|
visible: true
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}, true);
|
||||||
|
const dialog = vm.$children[0];
|
||||||
|
setTimeout(() => {
|
||||||
|
dialog.$el.click();
|
||||||
|
setTimeout(() => {
|
||||||
|
expect(vm.visible).to.be.false;
|
||||||
|
done();
|
||||||
|
}, 400);
|
||||||
|
}, 50);
|
||||||
|
});
|
||||||
|
it('click header btn', done => {
|
||||||
|
vm = createVue({
|
||||||
|
template: `
|
||||||
|
<div>
|
||||||
|
<el-dialog :title="title" :visible.sync="visible">
|
||||||
|
<span>这是一段信息</span>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
`,
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
title: 'dialog test',
|
||||||
|
visible: true
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}, true);
|
||||||
|
const dialog = vm.$children[0];
|
||||||
|
setTimeout(() => {
|
||||||
|
dialog.$el.querySelector('.el-dialog__headerbtn').click();
|
||||||
|
setTimeout(() => {
|
||||||
|
expect(vm.visible).to.be.false;
|
||||||
|
done();
|
||||||
|
}, 500);
|
||||||
|
}, 50);
|
||||||
|
});
|
||||||
|
it('before close', done => {
|
||||||
|
const spy = sinon.spy();
|
||||||
|
vm = createVue({
|
||||||
|
template: `
|
||||||
|
<div>
|
||||||
|
<el-dialog :title="title" :visible="visible" :before-close="beforeClose"></el-dialog>
|
||||||
|
</div>
|
||||||
|
`,
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
title: 'dialog test',
|
||||||
|
visible: true
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
beforeClose(done) {
|
||||||
|
spy();
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, true);
|
||||||
|
const dialog = vm.$children[0];
|
||||||
|
setTimeout(() => {
|
||||||
|
dialog.$el.click();
|
||||||
|
setTimeout(() => {
|
||||||
|
expect(spy.called).to.be.true;
|
||||||
|
done();
|
||||||
|
}, 500);
|
||||||
|
}, 10);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
import { createVue, triggerEvent, destroyVM } from '../util';
|
import { createVue, triggerEvent, destroyVM } from '../util';
|
||||||
|
|
||||||
|
const keyDown = (el, keyCode) => {
|
||||||
|
const evt = document.createEvent('Events');
|
||||||
|
evt.initEvent('keydown', true, true);
|
||||||
|
evt.keyCode = keyCode;
|
||||||
|
el.dispatchEvent(evt);
|
||||||
|
};
|
||||||
|
|
||||||
describe('Dropdown', () => {
|
describe('Dropdown', () => {
|
||||||
let vm;
|
let vm;
|
||||||
afterEach(() => {
|
afterEach(() => {
|
||||||
|
@ -182,4 +189,102 @@ describe('Dropdown', () => {
|
||||||
}, 300);
|
}, 300);
|
||||||
}, 300);
|
}, 300);
|
||||||
});
|
});
|
||||||
|
it('triggerElm keydown', done => {
|
||||||
|
vm = createVue({
|
||||||
|
template: `
|
||||||
|
<el-dropdown ref="dropdown">
|
||||||
|
<span class="el-dropdown-link">
|
||||||
|
下拉菜单<i class="el-icon-caret-bottom el-icon-right"></i>
|
||||||
|
</span>
|
||||||
|
<el-dropdown-menu slot="dropdown" class="dropdown-test-creat">
|
||||||
|
<el-dropdown-item>黄金糕</el-dropdown-item>
|
||||||
|
<el-dropdown-item>狮子头</el-dropdown-item>
|
||||||
|
<el-dropdown-item>螺蛳粉</el-dropdown-item>
|
||||||
|
<el-dropdown-item>双皮奶</el-dropdown-item>
|
||||||
|
<el-dropdown-item>蚵仔煎</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</el-dropdown>
|
||||||
|
`
|
||||||
|
}, true);
|
||||||
|
let dropdown = vm.$refs.dropdown;
|
||||||
|
let dropdownElm = dropdown.$el;
|
||||||
|
let triggerElm = dropdownElm.children[0];
|
||||||
|
keyDown(triggerElm, 13); // enter
|
||||||
|
setTimeout(() => {
|
||||||
|
expect(dropdown.visible).to.be.true;
|
||||||
|
keyDown(triggerElm, 27); // esc
|
||||||
|
setTimeout(() => {
|
||||||
|
expect(dropdown.visible).to.be.false;
|
||||||
|
done();
|
||||||
|
}, 300);
|
||||||
|
}, 400);
|
||||||
|
});
|
||||||
|
it('dropdown menu keydown', done => {
|
||||||
|
vm = createVue({
|
||||||
|
template: `
|
||||||
|
<el-dropdown ref="dropdown">
|
||||||
|
<span class="el-dropdown-link">
|
||||||
|
下拉菜单<i class="el-icon-caret-bottom el-icon-right"></i>
|
||||||
|
</span>
|
||||||
|
<el-dropdown-menu slot="dropdown" class="dropdown-test-creat">
|
||||||
|
<el-dropdown-item command="a">黄金糕</el-dropdown-item>
|
||||||
|
<el-dropdown-item command="b">狮子头</el-dropdown-item>
|
||||||
|
<el-dropdown-item command="c">螺蛳粉</el-dropdown-item>
|
||||||
|
<el-dropdown-item command="d">双皮奶</el-dropdown-item>
|
||||||
|
<el-dropdown-item command="e">蚵仔煎</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</el-dropdown>
|
||||||
|
`
|
||||||
|
}, true);
|
||||||
|
let dropdown = vm.$refs.dropdown;
|
||||||
|
let dropdownElm = dropdown.$el;
|
||||||
|
let triggerElm = dropdownElm.children[0];
|
||||||
|
let dropdownMenu = dropdown.dropdownElm;
|
||||||
|
|
||||||
|
triggerEvent(triggerElm, 'mouseenter');
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
expect(dropdown.visible).to.be.true;
|
||||||
|
keyDown(dropdownMenu, 40); // down
|
||||||
|
setTimeout(() => {
|
||||||
|
keyDown(dropdownMenu, 13); // enter
|
||||||
|
setTimeout(() => {
|
||||||
|
expect(dropdown.visible).to.be.false;
|
||||||
|
done();
|
||||||
|
}, 100);
|
||||||
|
}, 100);
|
||||||
|
}, 300);
|
||||||
|
});
|
||||||
|
it('updatePopper', done => {
|
||||||
|
vm = createVue({
|
||||||
|
template: `
|
||||||
|
<el-dropdown ref="dropdown">
|
||||||
|
<span class="el-dropdown-link">
|
||||||
|
下拉菜单<i class="el-icon-caret-bottom el-icon-right"></i>
|
||||||
|
</span>
|
||||||
|
<el-dropdown-menu slot="dropdown" class="dropdown-test-creat">
|
||||||
|
<el-dropdown-item>黄金糕</el-dropdown-item>
|
||||||
|
<el-dropdown-item>狮子头</el-dropdown-item>
|
||||||
|
<el-dropdown-item>螺蛳粉</el-dropdown-item>
|
||||||
|
<el-dropdown-item>双皮奶</el-dropdown-item>
|
||||||
|
<el-dropdown-item>蚵仔煎</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</el-dropdown>
|
||||||
|
`
|
||||||
|
}, true);
|
||||||
|
let dropdown = vm.$refs.dropdown;
|
||||||
|
let dropdownElm = dropdown.$el;
|
||||||
|
let triggerElm = dropdownElm.children[0];
|
||||||
|
|
||||||
|
triggerEvent(triggerElm, 'mouseenter');
|
||||||
|
setTimeout(() => {
|
||||||
|
const zIndex1 = document.querySelector('.el-dropdown-menu').style.zIndex;
|
||||||
|
dropdown.broadcast('ElDropdownMenu', 'updatePopper');
|
||||||
|
setTimeout(() => {
|
||||||
|
const zIndex2 = document.querySelector('.el-dropdown-menu').style.zIndex;
|
||||||
|
expect(zIndex2 > zIndex1).to.be.true;
|
||||||
|
done();
|
||||||
|
}, 100);
|
||||||
|
}, 300);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -98,4 +98,39 @@ describe('Tooltip', () => {
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
it('hide after', done => {
|
||||||
|
vm = createVue(`
|
||||||
|
<el-tooltip ref="tooltip" content="提示文字" :hide-after="300">
|
||||||
|
<button>click</button>
|
||||||
|
</el-tooltip>`);
|
||||||
|
const tooltip = vm.$refs.tooltip;
|
||||||
|
vm.$nextTick(_ => {
|
||||||
|
triggerEvent(tooltip.$el, 'mouseenter');
|
||||||
|
setTimeout(() => {
|
||||||
|
expect(tooltip.showPopper).to.be.true;
|
||||||
|
setTimeout(() => {
|
||||||
|
expect(tooltip.showPopper).to.be.false;
|
||||||
|
done();
|
||||||
|
}, 300);
|
||||||
|
}, 100);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
it('remove focus', done => {
|
||||||
|
vm = createVue(`
|
||||||
|
<el-tooltip ref="tooltip" content="提示文字" :hide-after="300">
|
||||||
|
<button>click</button>
|
||||||
|
</el-tooltip>`);
|
||||||
|
const tooltip = vm.$refs.tooltip;
|
||||||
|
vm.$nextTick(_ => {
|
||||||
|
triggerEvent(tooltip.$el, 'mouseenter');
|
||||||
|
setTimeout(() => {
|
||||||
|
tooltip.focusing = true;
|
||||||
|
tooltip.$el.click();
|
||||||
|
setTimeout(() => {
|
||||||
|
expect(tooltip.showPopper).to.be.false;
|
||||||
|
done();
|
||||||
|
}, 300);
|
||||||
|
}, 100);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue