balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

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 });