import React from "react"; import { render, fireEvent, TestWrapper, act } from "@test"; import ReactRouterDom from "react-router-dom"; import { RouteChangeHandler } from "./index"; const mockAuthProvider = { login: () => Promise.resolve(), logout: () => Promise.resolve(), checkError: () => Promise.resolve(), checkAuth: () => Promise.resolve(), getPermissions: () => Promise.resolve(["admin"]), getUserIdentity: () => Promise.resolve(), isProvided: true, }; describe("routeChangeHandler", () => { it("should render successful", () => { const { container } = render(, { wrapper: TestWrapper({ resources: [{ name: "posts" }], }), }); expect(container.innerHTML).toHaveLength(0); }); it("should call checkAuth on route change", () => { const checkAuthMockedAuthProvider = { ...mockAuthProvider, checkAuth: jest.fn().mockImplementation(() => Promise.resolve()), }; render(, { wrapper: TestWrapper({ authProvider: checkAuthMockedAuthProvider, }), }); expect(checkAuthMockedAuthProvider.checkAuth).toBeCalledTimes(1); }); it("should ignore checkAuth Promise.reject", () => { const checkAuthMockedAuthProvider = { ...mockAuthProvider, checkAuth: jest.fn().mockImplementation(() => Promise.reject()), }; render(, { wrapper: TestWrapper({ authProvider: checkAuthMockedAuthProvider, }), }); expect(checkAuthMockedAuthProvider.checkAuth).toBeCalledTimes(1); }); });