all files / tests/unit/ tabsItem.spec.js

100% Statements 28/28
100% Branches 0/0
100% Functions 8/8
100% Lines 28/28
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72                                                                                       
import chai, { expect } from 'chai'
import sinon from 'sinon'
import sinonChai from 'sinon-chai'
import { mount, shallowMount } from '@vue/test-utils'
chai.use(sinonChai)
 
import Vue from 'vue'
import Tabs from '../../src/tabs/tabs'
import TabsHeader from '../../src/tabs/tabsHeader'
import TabsBody from '../../src/tabs/tabsBody'
import TabsItem from '../../src/tabs/tabsItem'
import TabsPane from '../../src/tabs/tabsPane'
 
Vue.component('am-tabs', Tabs)
Vue.component('am-tabs-header', TabsHeader)
Vue.component('am-tabs-body', TabsBody)
Vue.component('am-tabs-item', TabsItem)
Vue.component('am-tabs-pane', TabsPane)
 
describe('TabsItem', () => {
  it('存在.', () => {
    expect(TabsItem).to.be.ok
  })
  it('接受 name 属性 ', done => {
    const wrapper = mount(TabsItem, {
      propsData: {
        name: 'test2'
      }
    })
    setTimeout(() => {
      expect(wrapper.attributes('data-name')).to.be.eq('test2')
      done()
    })
  })
  it('可以设置 disabled .', done => {
    const callback = sinon.fake()
    const wrapper = mount(TabsItem, {
      propsData: {
        disabled: true,
        name: 'test2'
      },
      listeners: {
        'update:selected': callback
      }
    })
    setTimeout(() => {
      expect(wrapper.classes('disabled')).to.be.true
      wrapper.find('.am-tabs-item[data-name="test2"]').trigger('click')
      expect(callback).to.have.not.been.called
      done()
    })
  })
  it('可以 click .', done => {
    const callback = sinon.fake()
    const wrapper = mount(TabsItem, {
      propsData: {
        name: 'test2'
      },
      listeners: {
        'update:selected': callback
      },
      inject: ['eventBus'],
      attachToDocument: true
    })
    setTimeout(() => {
      wrapper.find('.am-tabs-item[data-name="test2"]').trigger('click')
      // expect(callback).to.have.been.called()
      done()
    })
  })
})