import React from "react"; import ReactRouterDom, { Route } from "react-router-dom"; import { ErrorComponent } from "."; import { render, fireEvent, TestWrapper } from "@test"; const mHistory = { push: jest.fn(), replace: jest.fn(), }; jest.mock("react-router-dom", () => ({ ...(jest.requireActual("react-router-dom") as typeof ReactRouterDom), useHistory: jest.fn(() => mHistory), })); describe("ErrorComponent", () => { it("renders subtitle successfully", () => { const { getByText } = render(, { wrapper: TestWrapper({ resources: [{ name: "posts" }], }), }); getByText("Sorry, the page you visited does not exist."); }); it("renders button successfully", () => { const { container, getByText } = render(, { wrapper: TestWrapper({ resources: [{ name: "posts" }], }), }); expect(container.querySelector("button")).toBeTruthy(); getByText("Back Home"); }); it("renders called function successfully if click the button", () => { const { getByText } = render(, { wrapper: TestWrapper({ resources: [{ name: "posts" }], }), }); fireEvent.click(getByText("Back Home")); expect(mHistory.push).toBeCalledWith("/", undefined); }); it("renders error messages if resources action's not found", async () => { const { getByTestId, findByText } = render( , { wrapper: TestWrapper({ resources: [{ name: "posts", route: "posts" }], routerInitialEntries: ["/posts/create"], }), }, ); fireEvent.mouseOver(getByTestId("error-component-tooltip")); expect( await findByText( `You may have forgotten to add the "create" component to "posts" resource.`, ), ).toBeInTheDocument(); }); it("renders error messages if resource action's is different from 'create, edit, show'", () => { const { getByText } = render( , { wrapper: TestWrapper({ resources: [{ name: "posts", route: "posts" }], routerInitialEntries: ["/posts/invalidActionType"], }), }, ); getByText("Sorry, the page you visited does not exist."); }); });