import { createVue, triggerEvent, destroyVM } from '../util'; describe('Dropdown', () => { let vm; afterEach(() => { destroyVM(vm); }); it('create', done => { vm = createVue({ template: ` 下拉菜单 黄金糕 狮子头 螺蛳粉 双皮奶 蚵仔煎 ` }, true); let dropdown = vm.$refs.dropdown; let dropdownElm = dropdown.$el; let triggerElm = dropdownElm.children[0]; triggerEvent(triggerElm, 'mouseenter'); setTimeout(_ => { expect(dropdown.visible).to.be.true; triggerEvent(triggerElm, 'mouseleave'); setTimeout(_ => { expect(dropdown.visible).to.not.true; destroyVM(vm); done(); }, 300); }, 400); }); it('menu click', done => { vm = createVue({ template: ` 下拉菜单 黄金糕 狮子头 螺蛳粉 双皮奶 蚵仔煎 ` }, true); let dropdown = vm.$refs.dropdown; let dropdownElm = dropdown.$el; let triggerElm = dropdownElm.children[0]; let callback = sinon.spy(); dropdown.$on('command', callback); triggerEvent(triggerElm, 'mouseenter'); setTimeout(_ => { vm.$refs.commandC.$el.click(); setTimeout(_ => { expect(dropdown.visible).to.not.true; expect(callback.calledWith('c')).to.be.true; destroyVM(vm); done(); }, 300); }, 300); }); it('trigger', done => { vm = createVue({ template: ` 下拉菜单trigger click 黄金糕 狮子头 螺蛳粉 双皮奶 蚵仔煎 ` }, true); let dropdownElm = vm.$el; let dropdown = vm.$refs.dropdown; let triggerElm = dropdownElm.children[0]; triggerEvent(triggerElm, 'mouseenter'); dropdown.$nextTick(_ => { expect(dropdown.visible).to.not.true; triggerElm.click(); dropdown.$nextTick(_ => { expect(dropdown.visible).to.be.true; destroyVM(vm); done(); }); }); }); it('split button', done => { vm = createVue({ template: ` 更多菜单 黄金糕 狮子头 螺蛳粉 双皮奶 蚵仔煎 ` }, true); let dropdown = vm.$refs.dropdown; let dropdownElm = dropdown.$el; let triggerElm = dropdownElm.querySelector('.el-dropdown__caret-button'); var callback = sinon.spy(); dropdown.$on('click', callback); dropdownElm.querySelector('.el-button').click(); setTimeout(_ => { expect(callback.called).to.be.true; }, 300); triggerEvent(triggerElm, 'mouseenter'); setTimeout(_ => { expect(dropdown.visible).to.be.true; triggerEvent(triggerElm, 'mouseleave'); setTimeout(_ => { expect(dropdown.visible).to.not.true; destroyVM(vm); done(); }, 300); }, 300); }); it('hide on click', done => { vm = createVue({ template: ` 下拉菜单 黄金糕 狮子头 螺蛳粉 双皮奶 蚵仔煎 ` }, true); let dropdown = vm.$refs.dropdown; let dropdownElm = dropdown.$el; let triggerElm = dropdownElm.children[0]; let callback = sinon.spy(); dropdown.$on('command', callback); triggerEvent(triggerElm, 'mouseenter'); setTimeout(_ => { vm.$refs.commandC.$el.click(); setTimeout(_ => { expect(dropdown.visible).to.true; expect(callback.calledWith('c')).to.be.true; done(); }, 300); }, 300); }); });