/
githubmirror
/
element
Обзор
Документация
Войти
/
githubmirror
/
element
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
test/unit/specs/dropdown.spec.js
311 строк
11 KB
SHIODA Masaharu
Dropdown: add disabled property (#21235)
19 авг 2021, 12:40
Не верифицирован
19 авг 2021, 12:40
c50a0bf
Код
Авторство
О чём код?
import { createVue, triggerEvent, destroyVM, triggerKeyDown } from '../util'; describe('Dropdown', () => { let vm; afterEach(() => { destroyVM(vm); }); it('create', 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(_ => { expect(dropdown.visible).to.be.true; triggerEvent(triggerElm, 'mouseleave'); setTimeout(_ => { expect(dropdown.visible).to.not.true; done(); }, 300); }, 400); }); it('menu click', done => { const myCommandObject = { name: 'CommandC' }; 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"> <el-dropdown-item command="a">黄金糕</el-dropdown-item> <el-dropdown-item command="b">狮子头</el-dropdown-item> <el-dropdown-item ref="commandC" :command="myCommandObject">螺蛳粉</el-dropdown-item> <el-dropdown-item command="d">双皮奶</el-dropdown-item> <el-dropdown-item command="e">蚵仔煎</el-dropdown-item> </el-dropdown-menu> </el-dropdown> `, data() { return { myCommandObject }; } }, 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(myCommandObject)).to.be.true; done(); }, 300); }, 300); }); it('trigger', done => { vm = createVue({ template: ` <el-dropdown trigger="click" ref="dropdown"> <span class="el-dropdown-link"> 下拉菜单trigger click<i class="el-icon-caret-bottom el-icon-right"></i> </span> <el-dropdown-menu slot="dropdown"> <el-dropdown-item>黄金糕</el-dropdown-item> <el-dropdown-item @click.native="handleClick">狮子头</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 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(); setTimeout(_ => { expect(dropdown.visible).to.be.true; done(); }, 300); }); }); it('split button', done => { vm = createVue({ template: ` <el-dropdown split-button type="primary" ref="dropdown"> 更多菜单 <el-dropdown-menu slot="dropdown" class="dropdown-test-split-button"> <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.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; done(); }, 300); }, 300); }); it('hide on click', done => { vm = createVue({ template: ` <el-dropdown ref="dropdown" :hide-on-click="false"> <span class="el-dropdown-link"> 下拉菜单<i class="el-icon-caret-bottom el-icon-right"></i> </span> <el-dropdown-menu slot="dropdown"> <el-dropdown-item command="a">黄金糕</el-dropdown-item> <el-dropdown-item command="b">狮子头</el-dropdown-item> <el-dropdown-item ref="commandC" 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 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); }); 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]; triggerKeyDown(triggerElm, 13); // enter setTimeout(() => { expect(dropdown.visible).to.be.true; triggerKeyDown(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; triggerKeyDown(dropdownMenu, 40); // down setTimeout(() => { triggerKeyDown(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); }); it('dropdown disabled', done => { vm = createVue({ template: ` <el-dropdown ref="dropdown" disabled> <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(() => { expect(dropdownElm.querySelectorAll('.el-dropdown-link[disabled]').length).equal(1); expect(dropdown.visible).to.be.false; done(); }, 10); }); });