// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import { PreloadedState } from "@reduxjs/toolkit"; import type { RenderOptions } from "@testing-library/react"; import { render } from "@testing-library/react"; import React, { PropsWithChildren } from "react"; import { Provider } from "react-redux"; import { BrowserRouter } from "react-router-dom"; import { RootState } from "../../src/app/reducers/rootReducer"; import { AppStore, setupStore } from "../../src/app/store"; interface ExtendedRenderOptions extends Omit { preloadedState?: PreloadedState; store?: AppStore; } /** * * @param ui * @param root0 * @param root0.preloadedState * @param root0.store */ export function renderWithProviders( ui: React.ReactElement, { preloadedState = {}, store = setupStore(preloadedState), ...renderOptions }: ExtendedRenderOptions = {} ) { /** * * @param root0 * @param root0.children */ function Wrapper({ children }: PropsWithChildren<{}>): JSX.Element { return ( {children} ); } return { store, ...render(ui, { wrapper: Wrapper, ...renderOptions }) }; }