11import { ComponentType , lazy } from 'react' ;
22import { render , screen , waitFor } from '@testing-library/react' ;
3- import { MemoryRouter } from 'react-router-dom' ;
3+ import { MemoryRouter , Outlet } from 'react-router-dom' ;
44import { QueryClient , QueryClientProvider } from '@tanstack/react-query' ;
5+ import { initializeMockApp } from '@edx/frontend-platform/testing' ;
56import AuthZModule from './index' ;
67
7- // eslint-disable-next-line no-promise-executor-return
8- jest . mock ( './libraries-manager/LibrariesTeamManager' , ( ) => lazy ( ( ) => new Promise < { default : ComponentType < any > } > ( resolve => setTimeout ( ( ) => resolve ( { default : ( ) => < div data-testid = "libraries-manager" > Loaded</ div > } ) , 100 ) ) ) ) ;
8+ jest . mock ( './libraries-manager' , ( ) => ( {
9+ // eslint-disable-next-line no-promise-executor-return
10+ LibrariesLayout : lazy ( ( ) => new Promise < { default : ComponentType < any > } > ( resolve => setTimeout ( ( ) => resolve ( { default : ( ) => < div data-testid = "layout" > < Outlet /> </ div > } ) , 100 ) ) ) ,
11+ LibrariesTeamManager : ( ) => < div data-testid = "libraries-manager" > Libraries Team Page</ div > ,
12+ LibrariesUserManager : ( ) => < div data-testid = "libraries-user-manager" > Libraries User Page</ div > ,
13+ } ) ) ;
914
1015const createTestQueryClient = ( ) => new QueryClient ( {
1116 defaultOptions : {
@@ -16,6 +21,12 @@ const createTestQueryClient = () => new QueryClient({
1621} ) ;
1722
1823describe ( 'AuthZModule' , ( ) => {
24+ beforeEach ( ( ) => {
25+ jest . clearAllMocks ( ) ;
26+ initializeMockApp ( {
27+ authenticatedUser : { username : 'testuser' } ,
28+ } ) ;
29+ } ) ;
1930 it ( 'renders LoadingPage then LibrariesTeamManager when route matches' , async ( ) => {
2031 const queryClient = createTestQueryClient ( ) ;
2132 const path = '/libraries/lib:123' ;
@@ -34,4 +45,20 @@ describe('AuthZModule', () => {
3445 expect ( screen . getByTestId ( 'libraries-manager' ) ) . toBeInTheDocument ( ) ;
3546 } ) ;
3647 } ) ;
48+
49+ it ( 'renders LoadingPage then LibrariesUserManager when user route matches' , async ( ) => {
50+ const queryClient = createTestQueryClient ( ) ;
51+ const path = '/libraries/lib:123/testuser' ;
52+
53+ render (
54+ < QueryClientProvider client = { queryClient } >
55+ < MemoryRouter initialEntries = { [ path ] } >
56+ < AuthZModule />
57+ </ MemoryRouter >
58+ </ QueryClientProvider > ,
59+ ) ;
60+ await waitFor ( ( ) => {
61+ expect ( screen . getByTestId ( 'libraries-user-manager' ) ) . toBeInTheDocument ( ) ;
62+ } ) ;
63+ } ) ;
3764} ) ;
0 commit comments