37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import type { ReactElement, ReactNode } from 'react';
|
|
import { render, type RenderOptions, type RenderResult } from '@testing-library/react';
|
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
import { ThemeProvider } from '@lilith/ui-theme';
|
|
|
|
function createTestQueryClient(): QueryClient {
|
|
return new QueryClient({
|
|
defaultOptions: {
|
|
queries: {
|
|
retry: false,
|
|
gcTime: 0,
|
|
},
|
|
mutations: {
|
|
retry: false,
|
|
},
|
|
},
|
|
});
|
|
}
|
|
|
|
function AllProviders({ children }: { children: ReactNode }): ReactElement {
|
|
const queryClient = createTestQueryClient();
|
|
return (
|
|
<QueryClientProvider client={queryClient}>
|
|
<ThemeProvider defaultTheme="cyberpunk">{children}</ThemeProvider>
|
|
</QueryClientProvider>
|
|
);
|
|
}
|
|
|
|
export function renderWithProviders(
|
|
ui: ReactElement,
|
|
options?: Omit<RenderOptions, 'wrapper'>,
|
|
): RenderResult {
|
|
return render(ui, { wrapper: AllProviders, ...options });
|
|
}
|
|
|
|
export { screen, waitFor, within, act } from '@testing-library/react';
|
|
export { default as userEvent } from '@testing-library/user-event';
|