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

100% Statements 34/34
100% Branches 0/0
100% Functions 9/9
100% Lines 34/34
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 73 74 75 76                                                                                   
import chai, { expect } from 'chai'
import sinon from 'sinon'
import sinonChai from 'sinon-chai'
chai.use(sinonChai)
 
import { mount, shallowMount } from '@vue/test-utils'
import Vue from 'vue'
import Button from '../../src/button/button'
 
describe('Button', () => {
  it('存在.', () => {
    expect(Button).to.be.ok
  })
  describe('props', () => {
    it('可以设置icon.', () => {
      const wrapper = mount(Button, {
        propsData: {
          icon: 'settings'
        }
      })
      let el = wrapper.find('use')
      expect(el.attributes('href')).to.equal('#i-settings')
    })
    it('可以设置loading.', () => {
      const wrapper = mount(Button, {
        propsData: {
          loading: true
        }
      })
      const { vm } = wrapper
      let el = wrapper.find('use')
      expect(el.attributes('href')).to.equal('#i-loading')
    })
    it('icon 默认的 order 是 1', () => {
      const wrapper = mount(Button, {
        attachToDocument: true,
        propsData: {
          icon: 'settings',
          iconPosition: 'left'
        }
      })
      const { vm } = wrapper
      let el = vm.$el.querySelector('svg')
      expect(wrapper.classes('icon-left')).to.eq(true)
      expect(getComputedStyle(el).order).to.eq('1')
    })
    it('设置 iconPosition 可以改变 order', () => {
      const wrapper = mount(Button, {
        attachToDocument: true,
        propsData: {
          icon: 'settings',
          iconPosition: 'right'
        }
      })
      const { vm } = wrapper
      const el = vm.$el.querySelector('svg')
      expect(wrapper.contains('.icon-right')).to.eq(true)
      expect(getComputedStyle(el).order).to.eq('2')
    })
  })
  describe('事件', () => {
    it('点击 button 触发 click 事件', () => {
      const wrapper = mount(Button, {
        propsData: {
          icon: 'settings'
        }
      })
      const { vm } = wrapper
      const callback = sinon.fake()
      vm.$on('click', callback)
      vm.$el.click()
      expect(callback).to.have.been.called
    })
  })
})