diff options
Diffstat (limited to 'client/src/renderWithProviders.tsx')
-rw-r--r-- | client/src/renderWithProviders.tsx | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/client/src/renderWithProviders.tsx b/client/src/renderWithProviders.tsx new file mode 100644 index 0000000..476fdb1 --- /dev/null +++ b/client/src/renderWithProviders.tsx @@ -0,0 +1,28 @@ +import React, { PropsWithChildren, ReactElement } from 'react'; +import { render } from '@testing-library/react'; +import { Provider } from 'react-redux'; +import setupStore from './store'; +import type { AppStore, RootState } from './store'; +import type { RenderOptions } from '@testing-library/react'; + +interface ExtendedRenderOptions extends Omit<RenderOptions, 'queries'> { + preloadedState?: Partial<RootState>; + store?: AppStore; +} + +export function renderWithProviders( + ui: ReactElement, + extendedRenderOptions: ExtendedRenderOptions = {} +) { + const { + preloadedState = {}, + store = setupStore(preloadedState), + ...renderOptions + } = extendedRenderOptions; + + const Wrapper = ({ children }: PropsWithChildren) => ( + <Provider store={store}>{children}</Provider> + ); + + return { store, ...render(ui, { wrapper: Wrapper, ...renderOptions }) }; +} |