/*! Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 */ import { App } from './index'; import { LL } from '$strings'; import { MockMetaProvider } from '$core/provider/mock'; import { render } from '@testing-library/react'; import { useHasNoAccess, useIsAdmin, useIsRootAdmin } from '../provider/UserProvider'; jest.mock('../provider/UserProvider', () => ({ ...jest.requireActual('../provider/UserProvider'), useHasNoAccess: jest.fn(() => false), useIsAdmin: jest.fn(() => false), useIsRootAdmin: jest.fn(() => false), })); jest.mock('../../views/public', () => ({ Router: () => 'PUBLIC ROUTER', })); describe('core/App', () => { beforeEach(() => { jest.resetAllMocks(); }); it('should render app with default settings', () => { const { container, queryByText } = render(); expect(container).toBeDefined(); expect(queryByText(LL.VIEW.ADMIN.nav())).toBeNull(); }); it('should force users with no access to public landing page', () => { (useHasNoAccess as jest.MockedFunction).mockImplementation(() => true); const { container, queryByText } = render(); expect(container).toBeDefined(); expect(queryByText('PUBLIC ROUTER')).toBeDefined(); }); it('should render app with admin nav for admin user', () => { (useIsAdmin as jest.MockedFunction).mockImplementation(() => true); const { container, queryByText } = render(); expect(container).toBeDefined(); expect(queryByText(LL.VIEW.ADMIN.nav())).toBeDefined(); }); it('should render app with root admin nav for root admin user', () => { (useIsAdmin as jest.MockedFunction).mockImplementation(() => true); (useIsRootAdmin as jest.MockedFunction).mockImplementation(() => true); const { container, queryByText } = render(); expect(container).toBeDefined(); expect(queryByText(LL.VIEW.ADMIN.Teardown.nav())).toBeDefined(); }); });