index.test.js (1692B)
1 import ShallowRenderer from 'react-test-renderer/shallow'; 2 import renderer from 'react-test-renderer'; 3 import ButtonGroup from '../'; 4 5 jest.mock('../../preview-import', () => () => 'PreviewImport'); 6 jest.mock('../../dependent-plugins', () => () => 'DependentPlugins'); 7 8 9 let realUseContext, useContextMock; 10 let useEffect; 11 12 describe('Button Group', () => { 13 it('1. renders correctly: snapshot testing', () => { 14 const component = renderer.create(<TestComponent spinner={null} />); 15 const tree = component.toJSON(); 16 expect(tree).toMatchSnapshot(); 17 }); 18 19 describe('2. Testing props with react hook!!!', () => { 20 const mockUseEffect = () => { 21 useEffect.mockImplementationOnce(f => f()); 22 }; 23 24 beforeEach(() => { 25 useEffect = jest.spyOn(React, 'useEffect'); 26 realUseContext = React.useContext; 27 useContextMock = React.useContext = jest.fn(); 28 }); 29 30 afterEach(() => { 31 React.useContext = realUseContext; 32 }); 33 34 it('renders the default classname with spinner null', () => { 35 useContextMock.mockReturnValue({spinner: null}); 36 const element = new ShallowRenderer().render(<ButtonGroup />); 37 expect(element.props.className).toBe('redux-templates-import-button-group'); 38 }) 39 40 it('renders disabled status with spinner not null', () => { 41 mockUseEffect(); 42 useContextMock.mockReturnValue({spinner: 1}); 43 const element = new ShallowRenderer().render(<ButtonGroup />); 44 expect(element.props.className).toBe('redux-templates-import-button-group disabled'); 45 }) 46 }) 47 48 });