import React, { Component } from 'react'; import { render, mount } from 'enzyme'; import Button from '..'; import Icon from '../../icon'; describe('Button', () => { it('renders correctly', () => { const wrapper = render( ); expect(wrapper).toMatchSnapshot(); }); it('renders Chinese characters correctly', () => { const wrapper = render( ); expect(wrapper).toMatchSnapshot(); // should not insert space when there is icon const wrapper1 = render( ); expect(wrapper1).toMatchSnapshot(); // should not insert space when there is icon const wrapper2 = render( ); expect(wrapper2).toMatchSnapshot(); }); it('have static perperty for type detecting', () => { const wrapper = mount( ); // eslint-disable-next-line expect(wrapper.type().__ANT_BUTTON).toBe(true); }); it('should change loading state instantly by default', () => { class DefaultButton extends Component { state = { loading: false, }; enterLoading = () => { this.setState({ loading: true }); } render() { return ; } } const wrapper = mount( ); wrapper.simulate('click'); expect(wrapper.find('.ant-btn-loading').length).toBe(1); }); it('should change loading state with delay', () => { // eslint-disable-next-line class DefaultButton extends Component { state = { loading: false, }; enterLoading = () => { this.setState({ loading: { delay: 1000 } }); } render() { return ; } } const wrapper = mount( ); wrapper.simulate('click'); expect(wrapper.hasClass('ant-btn-loading')).toBe(false); }); it('should support link button', () => { const wrapper = mount( ); expect(wrapper.render()).toMatchSnapshot(); }); });