All files / frontend/test test-utils.tsx

100% Statements 5/5
100% Branches 0/0
100% Functions 2/2
100% Lines 5/5

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49                  4x               25x               25x                           4x   25x              
// src/test/test-utils.tsx
import { ReactElement, ReactNode } from 'react';
import { render, RenderOptions } from '@testing-library/react';
import { ThemeProvider, StyledEngineProvider } from '@mui/material/styles';
import CssBaseline from '@mui/material/CssBaseline';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { getThemeByName } from '../src/theme'; // adjust path as needed
import { SnackbarProvider } from '../src/contexts/SnackbarContext';
 
const theme = getThemeByName('light');
 
interface WrapperProps {
  children: ReactNode;
}
 
function AllTheProviders({ children }: WrapperProps) {
  // Create a new QueryClient for each test to ensure isolation
  const queryClient = new QueryClient({
    defaultOptions: {
      queries: {
        retry: false, // Disable retries in tests
      },
    },
  });
 
  return (
    <QueryClientProvider client={queryClient}>
      <SnackbarProvider>
        <StyledEngineProvider injectFirst>
          <ThemeProvider theme={theme}>
            <CssBaseline />
            {children}
          </ThemeProvider>
        </StyledEngineProvider>
      </SnackbarProvider>
    </QueryClientProvider>
  );
}
 
const customRender = (
  ui: ReactElement,
  options?: Omit<RenderOptions, 'wrapper'>
) => render(ui, { wrapper: AllTheProviders, ...options });
 
// Re-export everything
export * from '@testing-library/react';
 
// Override render method
export { customRender as render };