import React from 'react'; import { Provider } from 'react-redux'; import { mount } from 'enzyme'; import configureStore from 'redux/store/configureStore'; import { StaticRouter } from 'react-router-dom'; import Schemas, { SchemasProps } from '../Schemas'; import SchemasContainer from '../SchemasContainer'; describe('Schemas', () => { const pathname = `/ui/clusters/clusterName/schemas`; describe('Container', () => { const store = configureStore(); it('renders view', () => { const component = mount( ); expect(component.exists()).toBeTruthy(); }); describe('View', () => { const setupWrapper = (props: Partial = {}) => ( ); describe('Initial state', () => { let useEffect: jest.SpyInstance< void, [ effect: React.EffectCallback, deps?: React.DependencyList | undefined ] >; const mockedFn = jest.fn(); const mockedUseEffect = () => { useEffect.mockImplementationOnce(mockedFn); }; beforeEach(() => { useEffect = jest.spyOn(React, 'useEffect'); mockedUseEffect(); }); it('should call fetchSchemasByClusterName every render', () => { mount(setupWrapper({ fetchSchemasByClusterName: mockedFn })); expect(mockedFn).toHaveBeenCalled(); }); }); describe('when page is loading', () => { const wrapper = mount(setupWrapper({ isFetching: true })); it('renders PageLoader', () => { expect(wrapper.exists('PageLoader')).toBeTruthy(); }); }); }); }); });