import Button from '../index' import Icon from '../../icon' import { mount } from '@vue/test-utils' import Vue from 'vue' import { asyncExpect } from '@/tests/utils' describe('Button', () => { it('renders correctly', () => { const wrapper = mount({ render () { return }, }) expect(wrapper.html()).toMatchSnapshot() }) it('create primary button', () => { const wrapper = mount({ render (h) { return }, }) expect(wrapper.contains('.ant-btn-primary')).toBe(true) }) it('renders Chinese characters correctly', (done) => { const wrapper = mount( { render (h) { return }, } ) expect(wrapper.text()).toBe('按 钮') const wrapper1 = mount( { render (h) { return }, } ) expect(wrapper1.html()).toMatchSnapshot() const wrapper2 = mount( { render (h) { return }, } ) expect(wrapper2.html()).toMatchSnapshot() // should not insert space when there is icon const wrapper3 = mount( { render (h) { return }, } ) expect(wrapper3.html()).toMatchSnapshot() // should not insert space when there is icon while loading const wrapper4 = mount( { render (h) { return }, } ) expect(wrapper4.html()).toMatchSnapshot() // should insert space while loading const wrapper5 = mount( { render (h) { return }, } ) expect(wrapper5.html()).toMatchSnapshot() const wrapper6 = mount( { render (h) { return }, } ) Vue.nextTick(() => { expect(wrapper6.find('.ant-btn').contains('.ant-btn-two-chinese-chars')).toBe(true) done() }) }) it('should change loading state instantly by default', async () => { const DefaultButton = { data () { return { loading: false, } }, methods: { enterLoading () { this.loading = true }, }, render () { return }, } const wrapper = mount(DefaultButton, { sync: false }) await asyncExpect(() => { wrapper.trigger('click') }) await asyncExpect(() => { expect(wrapper.findAll('.ant-btn-loading').length).toBe(1) }) }) it('should change loading state with delay', async () => { const DefaultButton = { data () { return { loading: false, } }, methods: { enterLoading () { this.loading = { delay: 1000 } }, }, render () { return }, } const wrapper = mount(DefaultButton, { sync: false }) await asyncExpect(() => { wrapper.trigger('click') }) await asyncExpect(() => { expect(wrapper.contains('.ant-btn-loading')).toBe(false) }) }) it('should support link button', () => { const wrapper = mount({ render (h) { return }, }) expect(wrapper.html()).toMatchSnapshot() }) it('fixbug renders {0} , 0 and {false}', () => { const wrapper = mount({ render (h) { return }, }) expect(wrapper.html()).toMatchSnapshot() const wrapper1 = mount({ render (h) { return }, }) expect(wrapper1.html()).toMatchSnapshot() const wrapper2 = mount({ render (h) { return }, }) expect(wrapper2.html()).toMatchSnapshot() }) it('should not render as link button when href is undefined', async () => { const wrapper = mount({ render () { return ( ) }, }) expect(wrapper.html()).toMatchSnapshot() }) })