import { createVue, triggerEvent } from '../util'; describe('Dropdown', () => { it('create', done => { const 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; done(); }, 300); }, 400); }); it('menu click', done => { const vm = createVue({ template: ` 下拉菜单 黄金糕 狮子头 螺蛳粉 双皮奶 蚵仔煎 `, data() { return { clickedItem: '' }; }, methods: { handleClick(ev) { this.clickedItem = ev.target.innerText; } } }, true); let dropdownElm = vm.$el; let triggerElm = dropdownElm.children[0]; triggerEvent(triggerElm, 'mouseenter'); setTimeout(_ => { let dropdownMenu = document.querySelector('.dropdown-test-menu-click'); dropdownMenu.children[1].click(); setTimeout(_ => { expect(dropdownMenu.style.display).to.be.equal('none'); expect(vm.clickedItem).to.be.equal('狮子头'); done(); }, 600); }, 400); }); it('trigger', done => { const vm = createVue({ template: ` 下拉菜单trigger click 黄金糕 狮子头 螺蛳粉 双皮奶 蚵仔煎 `, data() { return { clickedItem: '' }; }, methods: { handleClick(ev) { this.clickedItem = ev.target.innerText; } } }, 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; dropdownElm.children[0].click(); dropdown.$nextTick(_ => { expect(dropdown.visible).to.be.true; done(); }); }); }); it('split button', done => { const vm = createVue({ template: ` 更多菜单 黄金糕 狮子头 螺蛳粉 双皮奶 蚵仔煎 `, data() { return { btnClicked: false }; }, methods: { handleClick(ev) { this.btnClicked = true; } } }, true); let dropdown = vm.$refs.dropdown; let dropdownElm = dropdown.$el; let triggerElm = dropdownElm.querySelector('.el-dropdown__caret-button'); triggerEvent(triggerElm, 'mouseenter'); setTimeout(_ => { expect(dropdown.visible).to.be.true; triggerEvent(triggerElm, 'mouseleave'); setTimeout(_ => { expect(dropdown.visible).to.not.true; done(); }, 400); }, 400); }); });