import React from 'react'; import { render as defaultRender } from '@testing-library/react'; import { RouterContext } from 'next/dist/next-server/lib/router-context'; import { NextRouter } from 'next/router'; export * from '@testing-library/react'; // -------------------------------------------------- // Override the default test render with our own // // You can override the router mock like this: // // const { baseElement } = render(, { // router: { pathname: '/my-custom-pathname' }, // }); // -------------------------------------------------- type DefaultParams = Parameters; type RenderUI = DefaultParams[0]; type RenderOptions = DefaultParams[1] & { router?: Partial }; export function render(ui: RenderUI, { wrapper, router, ...options }: RenderOptions = {}) { if (!wrapper) { wrapper = ({ children }) => ( {children} ); } return defaultRender(ui, { wrapper, ...options }); } const mockRouter: NextRouter = { basePath: '', pathname: '/', route: '/', asPath: '/', query: {}, push: jest.fn(), replace: jest.fn(), reload: jest.fn(), back: jest.fn(), prefetch: jest.fn(), beforePopState: jest.fn(), events: { on: jest.fn(), off: jest.fn(), emit: jest.fn(), }, isFallback: false, };