/* eslint-disable import/no-import-module-exports */ /* eslint-disable react/function-component-definition */ import React from 'react'; import { fetchAuthenticatedUser, getAuthenticatedUser } from '@edx/frontend-platform/auth'; import { mount } from 'enzyme'; import { act } from 'react-dom/test-utils'; import { UnAuthOnlyRoute } from '..'; import { REGISTER_PAGE } from '../../data/constants'; import { MemoryRouter, Route, BrowserRouter as Router, Routes, } from 'react-router-dom'; jest.mock('@edx/frontend-platform/auth', () => ({ getAuthenticatedUser: jest.fn(), fetchAuthenticatedUser: jest.fn(), })); const RRD = require('react-router-dom'); // Just render plain div with its children // eslint-disable-next-line react/prop-types RRD.BrowserRouter = ({ children }) =>
{ children }
; module.exports = RRD; const TestApp = () => (
Register Page} />
); describe('UnAuthOnlyRoute', () => { const routerWrapper = () => ( ); afterEach(() => { jest.clearAllMocks(); }); it('should have called with forceRefresh true', async () => { const user = { username: 'gonzo', other: 'data', }; getAuthenticatedUser.mockReturnValue(user); fetchAuthenticatedUser.mockReturnValueOnce(Promise.resolve(user)); await act(async () => { await mount(routerWrapper()); }); expect(fetchAuthenticatedUser).toBeCalledWith({ forceRefresh: true }); }); it('should have called with forceRefresh false', async () => { getAuthenticatedUser.mockReturnValue(null); fetchAuthenticatedUser.mockReturnValueOnce(Promise.resolve(null)); await act(async () => { await mount(routerWrapper()); }); expect(fetchAuthenticatedUser).toBeCalledWith({ forceRefresh: false }); }); });