test-utils.tsx 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import React, { type ReactElement } from "react";
  2. import {
  3. render,
  4. type RenderOptions,
  5. type RenderResult,
  6. } from "@testing-library/react";
  7. import { useHistory, useLocation } from "react-router";
  8. import { BrowserRouter } from "react-router-dom";
  9. import { createGlobalStyle, ThemeProvider } from "styled-components";
  10. import AuthProvider from "shared/auth/AuthContext";
  11. import { ContextProvider } from "shared/Context";
  12. import standard from "shared/themes/standard";
  13. const AllTheProviders: React.FC<{ children: React.ReactNode }> = ({
  14. children,
  15. }) => {
  16. return (
  17. <ThemeProvider theme={standard}>
  18. <BrowserRouter>
  19. <ContextProvider history={null} location={null}>
  20. <AuthProvider>{children}</AuthProvider>
  21. </ContextProvider>
  22. </BrowserRouter>
  23. </ThemeProvider>
  24. );
  25. };
  26. const customRender = (
  27. ui: ReactElement,
  28. options?: Omit<RenderOptions, "wrapper">
  29. ): RenderResult =>
  30. render(ui, {
  31. wrapper: AllTheProviders,
  32. ...options,
  33. });
  34. export * from "@testing-library/react";
  35. export { customRender as render };