import { PreloadedState } from '@reduxjs/toolkit'; import { RenderOptions, render } from '@testing-library/react'; import { PropsWithChildren } from 'react'; import { Provider } from 'react-redux'; import { AppStore, RootState, setupStore } from '~/store'; // Adapted from: https://redux.js.org/usage/writing-tests // eslint-disable-next-line react-refresh/only-export-components export * from '@testing-library/react'; export interface ExtendedRenderOptions extends RenderOptions { preloadedState?: PreloadedState; store?: AppStore; } export function renderWithProviders( ui: React.ReactElement, { preloadedState = {}, store = setupStore(preloadedState), ...renderOptions }: ExtendedRenderOptions = {} ) { function Wrapper({ children }: PropsWithChildren): JSX.Element { return {children}; } return { store, ...render(ui, { wrapper: Wrapper, ...renderOptions }) }; }