Skip to content

Commit 0906247

Browse files
author
zhiyang
committed
improve the test coverage
1 parent 203744a commit 0906247

File tree

4 files changed

+224
-1
lines changed

4 files changed

+224
-1
lines changed

packages/dropdown/src/dropdown.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@
169169
} else if (keyCode === 13) { // enter选中
170170
this.triggerElm.focus();
171171
target.click();
172-
if (!this.hideOnClick) { // click关闭
172+
if (this.hideOnClick) { // click关闭
173173
this.visible = false;
174174
}
175175
} else if ([9, 27].indexOf(keyCode) > -1) { // tab // esc

test/unit/specs/dialog.spec.js

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,4 +191,87 @@ describe('Dialog', () => {
191191
}, 50);
192192
}, 50);
193193
});
194+
it('click dialog to close', done => {
195+
vm = createVue({
196+
template: `
197+
<div>
198+
<el-dialog :title="title" :visible.sync="visible">
199+
<span>这是一段信息</span>
200+
</el-dialog>
201+
</div>
202+
`,
203+
204+
data() {
205+
return {
206+
title: 'dialog test',
207+
visible: true
208+
};
209+
}
210+
}, true);
211+
const dialog = vm.$children[0];
212+
setTimeout(() => {
213+
dialog.$el.click();
214+
setTimeout(() => {
215+
expect(vm.visible).to.be.false;
216+
done();
217+
}, 400);
218+
}, 50);
219+
});
220+
it('click header btn', done => {
221+
vm = createVue({
222+
template: `
223+
<div>
224+
<el-dialog :title="title" :visible.sync="visible">
225+
<span>这是一段信息</span>
226+
</el-dialog>
227+
</div>
228+
`,
229+
230+
data() {
231+
return {
232+
title: 'dialog test',
233+
visible: true
234+
};
235+
}
236+
}, true);
237+
const dialog = vm.$children[0];
238+
setTimeout(() => {
239+
dialog.$el.querySelector('.el-dialog__headerbtn').click();
240+
setTimeout(() => {
241+
expect(vm.visible).to.be.false;
242+
done();
243+
}, 500);
244+
}, 50);
245+
});
246+
it('before close', done => {
247+
const spy = sinon.spy();
248+
vm = createVue({
249+
template: `
250+
<div>
251+
<el-dialog :title="title" :visible="visible" :before-close="beforeClose"></el-dialog>
252+
</div>
253+
`,
254+
255+
data() {
256+
return {
257+
title: 'dialog test',
258+
visible: true
259+
};
260+
},
261+
methods: {
262+
beforeClose(done) {
263+
spy();
264+
done();
265+
}
266+
}
267+
}, true);
268+
const dialog = vm.$children[0];
269+
setTimeout(() => {
270+
dialog.$el.click();
271+
setTimeout(() => {
272+
expect(spy.called).to.be.true;
273+
done();
274+
}, 500);
275+
}, 10);
276+
});
194277
});

test/unit/specs/dropdown.spec.js

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
import { createVue, triggerEvent, destroyVM } from '../util';
22

3+
const keyDown = (el, keyCode) => {
4+
const evt = document.createEvent('Events');
5+
evt.initEvent('keydown', true, true);
6+
evt.keyCode = keyCode;
7+
el.dispatchEvent(evt);
8+
};
9+
310
describe('Dropdown', () => {
411
let vm;
512
afterEach(() => {
@@ -182,4 +189,102 @@ describe('Dropdown', () => {
182189
}, 300);
183190
}, 300);
184191
});
192+
it('triggerElm keydown', done => {
193+
vm = createVue({
194+
template: `
195+
<el-dropdown ref="dropdown">
196+
<span class="el-dropdown-link">
197+
下拉菜单<i class="el-icon-caret-bottom el-icon-right"></i>
198+
</span>
199+
<el-dropdown-menu slot="dropdown" class="dropdown-test-creat">
200+
<el-dropdown-item>黄金糕</el-dropdown-item>
201+
<el-dropdown-item>狮子头</el-dropdown-item>
202+
<el-dropdown-item>螺蛳粉</el-dropdown-item>
203+
<el-dropdown-item>双皮奶</el-dropdown-item>
204+
<el-dropdown-item>蚵仔煎</el-dropdown-item>
205+
</el-dropdown-menu>
206+
</el-dropdown>
207+
`
208+
}, true);
209+
let dropdown = vm.$refs.dropdown;
210+
let dropdownElm = dropdown.$el;
211+
let triggerElm = dropdownElm.children[0];
212+
keyDown(triggerElm, 13); // enter
213+
setTimeout(() => {
214+
expect(dropdown.visible).to.be.true;
215+
keyDown(triggerElm, 27); // esc
216+
setTimeout(() => {
217+
expect(dropdown.visible).to.be.false;
218+
done();
219+
}, 300);
220+
}, 400);
221+
});
222+
it('dropdown menu keydown', done => {
223+
vm = createVue({
224+
template: `
225+
<el-dropdown ref="dropdown">
226+
<span class="el-dropdown-link">
227+
下拉菜单<i class="el-icon-caret-bottom el-icon-right"></i>
228+
</span>
229+
<el-dropdown-menu slot="dropdown" class="dropdown-test-creat">
230+
<el-dropdown-item command="a">黄金糕</el-dropdown-item>
231+
<el-dropdown-item command="b">狮子头</el-dropdown-item>
232+
<el-dropdown-item command="c">螺蛳粉</el-dropdown-item>
233+
<el-dropdown-item command="d">双皮奶</el-dropdown-item>
234+
<el-dropdown-item command="e">蚵仔煎</el-dropdown-item>
235+
</el-dropdown-menu>
236+
</el-dropdown>
237+
`
238+
}, true);
239+
let dropdown = vm.$refs.dropdown;
240+
let dropdownElm = dropdown.$el;
241+
let triggerElm = dropdownElm.children[0];
242+
let dropdownMenu = dropdown.dropdownElm;
243+
244+
triggerEvent(triggerElm, 'mouseenter');
245+
246+
setTimeout(() => {
247+
expect(dropdown.visible).to.be.true;
248+
keyDown(dropdownMenu, 40); // down
249+
setTimeout(() => {
250+
keyDown(dropdownMenu, 13); // enter
251+
setTimeout(() => {
252+
expect(dropdown.visible).to.be.false;
253+
done();
254+
}, 100);
255+
}, 100);
256+
}, 300);
257+
});
258+
it('updatePopper', done => {
259+
vm = createVue({
260+
template: `
261+
<el-dropdown ref="dropdown">
262+
<span class="el-dropdown-link">
263+
下拉菜单<i class="el-icon-caret-bottom el-icon-right"></i>
264+
</span>
265+
<el-dropdown-menu slot="dropdown" class="dropdown-test-creat">
266+
<el-dropdown-item>黄金糕</el-dropdown-item>
267+
<el-dropdown-item>狮子头</el-dropdown-item>
268+
<el-dropdown-item>螺蛳粉</el-dropdown-item>
269+
<el-dropdown-item>双皮奶</el-dropdown-item>
270+
<el-dropdown-item>蚵仔煎</el-dropdown-item>
271+
</el-dropdown-menu>
272+
</el-dropdown>
273+
`
274+
}, true);
275+
let dropdown = vm.$refs.dropdown;
276+
let dropdownElm = dropdown.$el;
277+
let triggerElm = dropdownElm.children[0];
278+
279+
triggerEvent(triggerElm, 'mouseenter');
280+
setTimeout(() => {
281+
const zIndex1 = document.querySelector('.el-dropdown-menu').style.zIndex;
282+
dropdown.broadcast('ElDropdownMenu', 'updatePopper');
283+
setTimeout(() => {
284+
const zIndex2 = document.querySelector('.el-dropdown-menu').style.zIndex;
285+
expect(zIndex2 > zIndex1).to.be.true;
286+
done();
287+
}, 100);
288+
}, 300);
289+
});
185290
});

test/unit/specs/tooltip.spec.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,4 +98,39 @@ describe('Tooltip', () => {
9898
done();
9999
});
100100
});
101+
it('hide after', done => {
102+
vm = createVue(`
103+
<el-tooltip ref="tooltip" content="提示文字" :hide-after="300">
104+
<button>click</button>
105+
</el-tooltip>`);
106+
const tooltip = vm.$refs.tooltip;
107+
vm.$nextTick(_ => {
108+
triggerEvent(tooltip.$el, 'mouseenter');
109+
setTimeout(() => {
110+
expect(tooltip.showPopper).to.be.true;
111+
setTimeout(() => {
112+
expect(tooltip.showPopper).to.be.false;
113+
done();
114+
}, 300);
115+
}, 100);
116+
});
117+
});
118+
it('remove focus', done => {
119+
vm = createVue(`
120+
<el-tooltip ref="tooltip" content="提示文字" :hide-after="300">
121+
<button>click</button>
122+
</el-tooltip>`);
123+
const tooltip = vm.$refs.tooltip;
124+
vm.$nextTick(_ => {
125+
triggerEvent(tooltip.$el, 'mouseenter');
126+
setTimeout(() => {
127+
tooltip.focusing = true;
128+
tooltip.$el.click();
129+
setTimeout(() => {
130+
expect(tooltip.showPopper).to.be.false;
131+
done();
132+
}, 300);
133+
}, 100);
134+
});
135+
});
101136
});

0 commit comments

Comments
 (0)