/* * Copyright (C) 2020 Graylog, Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the Server Side Public License, version 1, * as published by MongoDB, Inc. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * Server Side Public License for more details. * * You should have received a copy of the Server Side Public License * along with this program. If not, see * . */ import * as React from 'react'; import type { RenderOptions } from '@testing-library/react'; import { render } from '@testing-library/react'; import { createMemoryRouter, RouterProvider } from 'react-router-dom'; import '@testing-library/jest-dom/jest-globals'; import '@testing-library/jest-dom'; import 'jest-styled-components'; import DefaultProviders from 'DefaultProviders'; import PreflightWrappingContainer from '../PreflightWrappingContainer'; import WrappingContainer from '../WrappingContainer'; export const renderWithWrapper = (Component: React.ReactElement, options?: RenderOptions) => render(Component, { wrapper: WrappingContainer, ...options, }); export const renderWithDataRouter = (element: React.ReactElement, options?: RenderOptions) => render(, { wrapper: DefaultProviders, ...options, }); export const renderPreflightWithWrapper = (Component: React.ReactElement, options?: RenderOptions) => render(Component, { wrapper: PreflightWrappingContainer, ...options, }); export function asElement any>(elem: any, elementType: T): InstanceType { if (elem && elem instanceof elementType) { // @ts-ignore return elem as T; } const { name } = elementType; throw new Error(`Unable to cast ${elem?.constructor?.name ?? 'unknown'} to ${name}!`); } export type { Matcher } from '@testing-library/react'; export { act, cleanup, renderHook, screen, fireEvent, within, waitFor, waitForElementToBeRemoved, } from '@testing-library/react'; export { renderWithWrapper as render, renderPreflightWithWrapper as renderPreflight, render as renderUnwrapped };