36 行
905 B
TypeScript
36 行
905 B
TypeScript
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
|
|
import { render } from '@testing-library/react'
|
|
import { HelmetProvider } from 'react-helmet-async'
|
|
import { MemoryRouter } from 'react-router-dom'
|
|
|
|
import type { ReactElement, ReactNode } from 'react'
|
|
|
|
type Options = {
|
|
route?: string
|
|
}
|
|
|
|
export const renderWithProviders = (
|
|
ui: ReactElement,
|
|
options: Options = {},
|
|
) => {
|
|
const queryClient = new QueryClient ({
|
|
defaultOptions: {
|
|
queries: { retry: false },
|
|
},
|
|
})
|
|
|
|
const Wrapper = ({ children }: { children: ReactNode }) => (
|
|
<QueryClientProvider client={queryClient}>
|
|
<HelmetProvider>
|
|
<MemoryRouter initialEntries={[options.route ?? '/']}>
|
|
{children}
|
|
</MemoryRouter>
|
|
</HelmetProvider>
|
|
</QueryClientProvider>)
|
|
|
|
return {
|
|
queryClient,
|
|
...render (ui, { wrapper: Wrapper }),
|
|
}
|
|
}
|