123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332 |
- import { createVue, triggerEvent, destroyVM } from '../util';
- describe('Menu', () => {
- let vm;
- afterEach(() => {
- destroyVM(vm);
- });
- it('create', done => {
- vm = createVue({
- template: `
- <el-menu>
- <el-menu-item index="1" ref="item1">处理中心</el-menu-item>
- <el-menu-item index="2" ref="item2">订单管理</el-menu-item>
- </el-menu>
- `
- }, true);
- var item1 = vm.$refs.item1;
- var item2 = vm.$refs.item2;
- item1.$el.click();
- setTimeout(_ => {
- expect(item1.$el.classList.contains('is-active')).to.be.true;
- item2.$el.click();
- setTimeout(_ => {
- expect(item2.$el.classList.contains('is-active')).to.be.true;
- done();
- }, 20);
- }, 20);
- });
- it('menu-item click', done => {
- vm = createVue({
- template: `
- <el-menu>
- <el-menu-item @click="onMenuItemClick" index="1" ref="item1">处理中心</el-menu-item>
- <el-menu-item index="2" ref="item2">订单管理</el-menu-item>
- </el-menu>
- `,
- methods: {
- onMenuItemClick(el) {
- expect(el).to.be.equal(vm.$refs.item1);
- this.clicksCount = this.clicksCount + 1;
- }
- },
- data() {
- return {
- clicksCount: 0
- };
- }
- }, true);
- var item1 = vm.$refs.item1;
- item1.$el.click();
- setTimeout(_ => {
- expect(vm.clicksCount).to.be.equal(1);
- done();
- }, 20);
- });
- describe('default active', () => {
- it('normal active', done => {
- vm = createVue({
- template: `
- <el-menu default-active="2">
- <el-menu-item index="1" ref="item1">处理中心</el-menu-item>
- <el-menu-item index="2" ref="item2">订单管理</el-menu-item>
- </el-menu>
- `
- }, true);
- expect(vm.$refs.item2.$el.classList.contains('is-active')).to.be.true;
- vm.$refs.item1.$el.click();
- setTimeout(_ => {
- expect(vm.$refs.item1.$el.classList.contains('is-active')).to.be.true;
- done();
- }, 20);
- });
- it('dynamic active', done => {
- vm = createVue({
- template: `
- <el-menu :default-active="active">
- <el-menu-item index="1" ref="item1">active watch处理中心</el-menu-item>
- <el-menu-item index="2" ref="item2">active watch订单管理</el-menu-item>
- </el-menu>
- `,
- data() {
- return {
- active: '2'
- };
- }
- }, true);
- setTimeout(_ => {
- vm.active = '1';
- setTimeout(_ => {
- expect(vm.$refs.item1.$el.classList.contains('is-active')).to.be.true;
- done();
- }, 20);
- }, 100);
- });
- it('vertical submenu item active', done => {
- vm = createVue({
- template: `
- <div>
- <el-menu default-active="2-2">
- <el-menu-item index="1" ref="item1">处理中心</el-menu-item>
- <el-submenu index="2" ref="submenu">
- <template slot="title">我的工作台</template>
- <el-menu-item index="2-1">选项1</el-menu-item>
- <el-menu-item index="2-2" ref="submenuItem2">选项2</el-menu-item>
- <el-menu-item index="2-3">选项3</el-menu-item>
- </el-submenu>
- <el-menu-item index="3">订单管理</el-menu-item>
- </el-menu>
- </div>
- `
- }, true);
- expect(vm.$refs.submenuItem2.$el.classList.contains('is-active')).to.be.true;
- setTimeout(_ => {
- expect(vm.$refs.submenu.$el.classList.contains('is-opened')).to.be.true;
- expect(vm.$refs.submenu.$el.classList.contains('is-active')).to.be.true;
- done();
- }, 20);
- });
- it('horizontal submenu item active', done => {
- vm = createVue({
- template: `
- <div>
- <el-menu default-active="2-2">
- <el-menu-item index="1" ref="item1">处理中心</el-menu-item>
- <el-submenu index="2" ref="submenu">
- <template slot="title">我的工作台</template>
- <el-menu-item index="2-1">选项1</el-menu-item>
- <el-menu-item index="2-2" ref="submenuItem2">选项2</el-menu-item>
- <el-menu-item index="2-3">选项3</el-menu-item>
- </el-submenu>
- <el-menu-item index="3">订单管理</el-menu-item>
- </el-menu>
- </div>
- `
- }, true);
- expect(vm.$refs.submenuItem2.$el.classList.contains('is-active')).to.be.true;
- setTimeout(_ => {
- expect(vm.$refs.submenu.$el.classList.contains('is-opened')).to.be.true;
- expect(vm.$refs.submenu.$el.classList.contains('is-active')).to.be.true;
- done();
- }, 20);
- });
- });
- describe('submenu', function() {
- it('toggle', done => {
- vm = createVue({
- template: `
- <el-menu>
- <el-menu-item index="1" ref="item1">处理中心</el-menu-item>
- <el-submenu index="2" ref="submenu">
- <template slot="title">我的工作台</template>
- <el-menu-item index="2-1">选项1</el-menu-item>
- <el-menu-item index="2-2" ref="submenuItem2">选项2</el-menu-item>
- <el-menu-item index="2-3">选项3</el-menu-item>
- </el-submenu>
- <el-menu-item index="3">订单管理</el-menu-item>
- </el-menu>
- `,
- data() {
- return {
- };
- }
- }, true);
- var submenuItem2 = vm.$refs.submenuItem2;
- var submenu = vm.$refs.submenu;
- submenu.$el.querySelector('.el-submenu__title').click();
- setTimeout(_ => {
- expect(submenu.$el.classList.contains('is-opened')).to.be.true;
- submenuItem2.$el.click();
- setTimeout(_ => {
- expect(submenuItem2.$el.classList.contains('is-active')).to.be.true;
- submenu.$el.querySelector('.el-submenu__title').click();
- setTimeout(_ => {
- expect(submenu.$el.classList.contains('is-opened')).to.not.true;
- done();
- }, 20);
- }, 20);
- }, 20);
- });
- it('default opened', done => {
- vm = createVue({
- template: `
- <el-menu :default-openeds="defaultOpeneds">
- <el-menu-item index="1">default opened处理中心</el-menu-item>
- <el-submenu index="2" ref="submenu1">
- <template slot="title">default opened我的工作台</template>
- <el-menu-item index="2-1">选项1</el-menu-item>
- <el-menu-item index="2-2" ref="submenu1Item2">选项2</el-menu-item>
- <el-menu-item index="2-3">选项3</el-menu-item>
- </el-submenu>
- <el-submenu index="3" ref="submenu2">
- <template slot="title">default opened订单管理</template>
- <el-menu-item index="3-1">选项1</el-menu-item>
- <el-menu-item index="3-2" ref="submenu2Item2">选项2</el-menu-item>
- <el-menu-item index="3-3">选项3</el-menu-item>
- </el-submenu>
- </el-menu>
- `,
- data() {
- return {
- defaultOpeneds: ['2', '3']
- };
- }
- }, true);
- expect(vm.$refs.submenu1.$el.classList.contains('is-opened')).to.be.true;
- expect(vm.$refs.submenu2.$el.classList.contains('is-opened')).to.be.true;
- vm.defaultOpeneds = ['2'];
- setTimeout(_ => {
- expect(vm.$refs.submenu1.$el.classList.contains('is-opened')).to.be.true;
- expect(vm.$refs.submenu2.$el.classList.contains('is-opened')).to.not.true;
- done();
- }, 20);
- });
- });
- it('unique-opened', done => {
- vm = createVue({
- template: `
- <el-menu unique-opened default-active="2-2">
- <el-menu-item index="1">处理中心</el-menu-item>
- <el-submenu index="2" ref="submenu1">
- <template slot="title">我的工作台</template>
- <el-menu-item index="2-1">选项1</el-menu-item>
- <el-menu-item index="2-2" ref="submenu1Item2">选项2</el-menu-item>
- <el-menu-item index="2-3">选项3</el-menu-item>
- </el-submenu>
- <el-submenu index="3" ref="submenu2">
- <template slot="title">订单管理</template>
- <el-menu-item index="3-1">选项1</el-menu-item>
- <el-menu-item index="3-2" ref="submenu2Item2">选项2</el-menu-item>
- <el-menu-item index="3-3">选项3</el-menu-item>
- </el-submenu>
- </el-menu>
- `,
- data() {
- return {
- };
- }
- }, true);
- vm.$refs.submenu2.$el.querySelector('.el-submenu__title').click();
- setTimeout(_ => {
- expect(vm.$refs.submenu1.$el.classList.contains('is-opened')).to.not.true;
- done();
- }, 20);
- });
- it('horizontal mode', done => {
- vm = createVue({
- template: `
- <el-menu mode="horizontal">
- <el-menu-item index="1">处理中心</el-menu-item>
- <el-submenu index="2" ref="submenu">
- <template slot="title">我的工作台</template>
- <el-menu-item index="2-1">选项1</el-menu-item>
- <el-menu-item index="2-2" ref="submenuItem2">选项2</el-menu-item>
- <el-menu-item index="2-3">选项3</el-menu-item>
- </el-submenu>
- <el-menu-item index="3">订单管理</el-menu-item>
- </el-menu>
- `,
- data() {
- return {
- };
- }
- }, true);
- expect(vm.$el.classList.contains('el-menu--horizontal')).to.be.true;
- var submenu = vm.$refs.submenu;
- triggerEvent(submenu.$el, 'mouseenter');
- setTimeout(_ => {
- expect(submenu.$el.querySelector('.el-menu').style.display).to.not.ok;
- done();
- }, 500);
- });
- it('menu trigger click', done => {
- vm = createVue({
- template: `
- <el-menu mode="horizontal" menu-trigger="click">
- <el-menu-item index="1">处理中心</el-menu-item>
- <el-submenu index="2" ref="submenu">
- <template slot="title">我的工作台</template>
- <el-menu-item index="2-1">选项1</el-menu-item>
- <el-menu-item index="2-2" ref="submenuItem2">选项2</el-menu-item>
- <el-menu-item index="2-3">选项3</el-menu-item>
- </el-submenu>
- <el-menu-item index="3">订单管理</el-menu-item>
- </el-menu>
- `,
- data() {
- return {
- };
- }
- }, true);
- expect(vm.$el.classList.contains('el-menu--horizontal')).to.be.true;
- var submenu = vm.$refs.submenu;
- var triggerElm = submenu.$el.querySelector('.el-submenu__title');
- triggerEvent(submenu.$el, 'mouseenter');
- triggerElm.click();
- setTimeout(_ => {
- expect(submenu.$el.querySelector('.el-menu').style.display).to.not.ok;
- triggerElm.click();
- setTimeout(_ => {
- expect(submenu.$el.querySelector('.el-menu').style.display).to.be.equal('none');
- done();
- }, 1000);
- }, 500);
- });
- it('menu group', () => {
- vm = createVue({
- template: `
- <el-menu mode="vertical" default-active="1">
- <el-menu-item-group title="分组一" ref="group1">
- <el-menu-item index="1"><i class="el-icon-message"></i>导航一</el-menu-item>
- <el-menu-item index="2"><i class="el-icon-message"></i>导航二</el-menu-item>
- </el-menu-item-group>
- <el-submenu index="5">
- <template slot="title">导航五</template>
- <el-menu-item-group title="分组二">
- <el-menu-item index="5-1">选项1</el-menu-item>
- <el-menu-item index="5-2">选项2</el-menu-item>
- </el-menu-item-group>
- </el-submenu>
- </el-menu>
- `
- }, true);
- expect(vm.$refs.group1.$el.querySelector('.el-menu-item-group__title').innerText).to.be.equal('分组一');
- });
- });
|