43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
import { type ReactNode } from 'react';
|
|
import { render, type RenderOptions } from '@testing-library/react';
|
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
import { RouterProvider, createMemoryHistory } from '@tanstack/react-router';
|
|
import { router } from '../routes';
|
|
|
|
function createTestQueryClient() {
|
|
return new QueryClient({
|
|
defaultOptions: {
|
|
queries: { retry: false, gcTime: 0 },
|
|
mutations: { retry: false },
|
|
},
|
|
});
|
|
}
|
|
|
|
export function renderWithProviders(
|
|
ui: ReactNode,
|
|
options?: RenderOptions,
|
|
) {
|
|
const queryClient = createTestQueryClient();
|
|
function Wrapper({ children }: { children: ReactNode }) {
|
|
return (
|
|
<QueryClientProvider client={queryClient}>
|
|
{children}
|
|
</QueryClientProvider>
|
|
);
|
|
}
|
|
return render(ui, { wrapper: Wrapper, ...options });
|
|
}
|
|
|
|
export function renderRoute(path: string) {
|
|
const queryClient = createTestQueryClient();
|
|
const history = createMemoryHistory({ initialEntries: [path] });
|
|
const testRouter = Object.assign(router, {});
|
|
testRouter.update({ history });
|
|
|
|
return render(
|
|
<QueryClientProvider client={queryClient}>
|
|
<RouterProvider router={testRouter} />
|
|
</QueryClientProvider>,
|
|
);
|
|
}
|