import { createVue, triggerEvent, destroyVM } from '../util';
describe('Menu', () => {
  let vm;
  afterEach(() => {
    destroyVM(vm);
  });
  it('create', done => {
    vm = createVue({
      template: `
        
          处理中心
          订单管理
        
      `
    }, true);
    var item1 = vm.$refs.item1;
    var item2 = vm.$refs.item2;
    item1.$el.click();
    vm.$nextTick(_ => {
      expect(item1.$el.classList.contains('is-active')).to.be.true;
      item2.$el.click();
      vm.$nextTick(_ => {
        expect(item2.$el.classList.contains('is-active')).to.be.true;
        done();
      });
    });
  });
  describe('default active', () => {
    it('normal active', done => {
      vm = createVue({
        template: `
          
            处理中心
            订单管理
          
        `
      }, true);
      expect(vm.$refs.item2.$el.classList.contains('is-active')).to.be.true;
      vm.$refs.item1.$el.click();
      vm.$nextTick(_ => {
        expect(vm.$refs.item1.$el.classList.contains('is-active')).to.be.true;
        done();
      });
    });
    it('dynamic active', done => {
      vm = createVue({
        template: `
          
            active watch处理中心
            active watch订单管理
          
        `,
        data() {
          return {
            active: '2'
          };
        }
      }, true);
      setTimeout(_ => {
        vm.active = '1';
        vm.$nextTick(_ => {
          expect(vm.$refs.item1.$el.classList.contains('is-active')).to.be.true;
          done();
        });
      }, 100);
    });
    it('vertical submenu item active', done => {
      vm = createVue({
        template: `
          
            
              处理中心
              
                我的工作台
                选项1
                选项2
                选项3
              
              订单管理
            
          
        `
      }, true);
      expect(vm.$refs.submenuItem2.$el.classList.contains('is-active')).to.be.true;
      vm.$nextTick(_ => {
        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();
      });
    });
    it('horizontal submenu item active', done => {
      vm = createVue({
        template: `
          
            
              处理中心
              
                我的工作台
                选项1
                选项2
                选项3
              
              订单管理
            
          
        `
      }, true);
      expect(vm.$refs.submenuItem2.$el.classList.contains('is-active')).to.be.true;
      vm.$nextTick(_ => {
        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();
      });
    });
  });
  describe('submenu', () => {
    it('toggle', done => {
      vm = createVue({
        template: `
          
            处理中心
            
              我的工作台
              选项1
              选项2
              选项3
            
            订单管理
          
        `,
        data() {
          return {
          };
        }
      }, true);
      var submenuItem2 = vm.$refs.submenuItem2;
      var submenu = vm.$refs.submenu;
      submenu.$el.querySelector('.el-submenu__title').click();
      vm.$nextTick(_ => {
        expect(submenu.$el.classList.contains('is-opened')).to.be.true;
        submenuItem2.$el.click();
        vm.$nextTick(_ => {
          expect(submenuItem2.$el.classList.contains('is-active')).to.be.true;
          submenu.$el.querySelector('.el-submenu__title').click();
          vm.$nextTick(_ => {
            expect(submenu.$el.classList.contains('is-opened')).to.not.true;
            done();
          });
        });
      });
    });
    it('default opened', done => {
      vm = createVue({
        template: `
          
            default opened处理中心
            
              default opened我的工作台
              选项1
              选项2
              选项3
            
            
              default opened订单管理
              选项1
              选项2
              选项3
            
          
        `,
        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'];
      vm.$nextTick(_ => {
        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();
      });
    });
  });
  it('theme', () => {
    vm = createVue({
      template: `
        
          处理中心
          订单管理
        
      `,
      data() {
        return {
        };
      }
    }, true);
    expect(vm.$el.classList.contains('el-menu--dark')).to.be.true;
  });
  it('unique-opened', done => {
    vm = createVue({
      template: `
        
          处理中心
          
            我的工作台
            选项1
            选项2
            选项3
          
          
            订单管理
            选项1
            选项2
            选项3
          
        
      `,
      data() {
        return {
        };
      }
    }, true);
    vm.$refs.submenu2.$el.querySelector('.el-submenu__title').click();
    vm.$nextTick(_ => {
      expect(vm.$refs.submenu1.$el.classList.contains('is-opened')).to.not.true;
      done();
    });
  });
  it('horizontal mode', done => {
    vm = createVue({
      template: `
        
          处理中心
          
            我的工作台
            选项1
            选项2
            选项3
          
          订单管理
        
      `,
      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;
      triggerEvent(submenu.$el, 'mouseleave');
      setTimeout(_ => {
        expect(submenu.$el.querySelector('.el-menu').style.display).to.be.equal('none');
        done();
      }, 1000);
    }, 500);
  });
  it('menu trigger click', done => {
    vm = createVue({
      template: `
        
          处理中心
          
            我的工作台
            选项1
            选项2
            选项3
          
          订单管理
        
      `,
      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', done => {
    vm = createVue({
      template: `
        
          
            导航一
            导航二
          
          
            导航五
            
              选项1
              选项2
            
          
        
      `
    }, true);
    expect(vm.$refs.group1.$el.querySelector('.el-menu-item-group__title').innerText).to.be.equal('分组一');
    done();
  });
});