import type { AppStore, RootState } from '@/app/store' import { setupStore } from '@/app/store' import { TwakeMuiThemeProvider } from '@linagora/twake-mui' import type { RenderOptions } from '@testing-library/react' import { render } from '@testing-library/react' import React, { PropsWithChildren } from 'react' import { Provider } from 'react-redux' import { MemoryRouter } from 'react-router-dom' import { I18nContext } from 'twake-i18n' interface ExtendedRenderOptions extends Omit { preloadedState?: Partial store?: AppStore } export function renderWithProviders( ui: React.ReactElement, preloadedState = {}, extendedRenderOptions: ExtendedRenderOptions = {} ) { const { store = setupStore(preloadedState), ...renderOptions } = extendedRenderOptions const Wrapper = ({ children }: PropsWithChildren) => { return ( ) => { if (key === 'locale') { return 'en' } if (vars) { const params = Object.entries(vars) .map(([k, v]) => `${k}=${v}`) .join(',') return `${key}(${params})` } return key }, f: (date: Date, formatStr: string) => date.toString(), lang: 'en' }} > {children} ) } return { store, ...render(ui, { wrapper: Wrapper, ...renderOptions }) } }