import * as React from 'react'; import { render } from '../../../../test-utils/testing-library'; import withNavRouter from '../withNavRouter'; import { WithNavRouterProps } from '../types'; jest.mock('../NavRouter', () => ({ children }: { children: React.ReactNode }) => (
{children}
)); type Props = { value?: string; }; describe('src/eleemnts/common/nav-router/withNavRouter', () => { const TestComponent = ({ value }: Props) =>
{`Test ${value}`}
; const WrappedComponent = withNavRouter(TestComponent); const renderComponent = (props?: Props & WithNavRouterProps) => render(); test('should wrap component with NavRouter', () => { const { getByTestId } = renderComponent(); expect(getByTestId('test-component')).toBeInTheDocument(); expect(getByTestId('test-component')).toHaveTextContent('Test undefined'); expect(getByTestId('nav-router-wrapper')).toBeInTheDocument(); }); test('should pass props to wrapped component', () => { const { getByTestId } = renderComponent({ value: 'test-value' }); expect(getByTestId('test-component')).toBeInTheDocument(); expect(getByTestId('test-component')).toHaveTextContent('Test test-value'); }); describe('when routerDisabled feature flag is provided', () => { test('should return unwrapped component when feature flag is true', () => { const features = { routerDisabled: { value: true } }; const { getByTestId, queryByTestId } = renderComponent({ features }); expect(getByTestId('test-component')).toBeInTheDocument(); expect(getByTestId('test-component')).toHaveTextContent('Test undefined'); expect(queryByTestId('nav-router-wrapper')).not.toBeInTheDocument(); }); test('should wrap component with NavRouter when feature flag is false', () => { const features = { routerDisabled: { value: false } }; const { getByTestId } = renderComponent({ features }); expect(getByTestId('test-component')).toBeInTheDocument(); expect(getByTestId('test-component')).toHaveTextContent('Test undefined'); expect(getByTestId('nav-router-wrapper')).toBeInTheDocument(); }); }); });