@@ -3,11 +3,18 @@ import userEvent from '@testing-library/user-event';
33import { renderWrapper } from '@src/setupTest' ;
44import { initializeMockApp } from '@edx/frontend-platform/testing' ;
55import { useLibrary , useUpdateLibrary } from '@src/authz-module/data/hooks' ;
6+ import { useNavigate , useLocation } from 'react-router-dom' ;
67import { useLibraryAuthZ } from './context' ;
78import LibrariesTeamManager from './LibrariesTeamManager' ;
89import { ToastManagerProvider } from './ToastManagerContext' ;
910import { CONTENT_LIBRARY_PERMISSIONS } from './constants' ;
1011
12+ jest . mock ( 'react-router-dom' , ( ) => ( {
13+ ...jest . requireActual ( 'react-router-dom' ) ,
14+ useNavigate : jest . fn ( ) ,
15+ useLocation : jest . fn ( ) . mockReturnValue ( { hash : '' } ) ,
16+ } ) ) ;
17+
1118jest . mock ( './context' , ( ) => {
1219 const actual = jest . requireActual ( './context' ) ;
1320 return {
@@ -53,6 +60,7 @@ describe('LibrariesTeamManager', () => {
5360 allowPublicRead : false ,
5461 } ;
5562 const mutate = jest . fn ( ) ;
63+ const mockNavigate = jest . fn ( ) ;
5664 const libraryAuthZContext = {
5765 libraryId : libraryData . id ,
5866 libraryName : libraryData . title ,
@@ -90,6 +98,8 @@ describe('LibrariesTeamManager', () => {
9098 mutate,
9199 isPending : false ,
92100 } ) ;
101+ ( useNavigate as jest . Mock ) . mockReturnValue ( mockNavigate ) ;
102+ ( useLocation as jest . Mock ) . mockReturnValue ( { hash : '' } ) ;
93103 } ) ;
94104
95105 it ( 'renders tabs and layout content correctly' , ( ) => {
@@ -136,7 +146,7 @@ describe('LibrariesTeamManager', () => {
136146 const permissionsTab = await screen . findByRole ( 'tab' , { name : / p e r m i s s i o n s / i } ) ;
137147 await user . click ( permissionsTab ) ;
138148
139- const tablePermissionMatrix = await screen . getByRole ( 'table' ) ;
149+ const tablePermissionMatrix = screen . getByRole ( 'table' ) ;
140150 const matrixScope = within ( tablePermissionMatrix ) ;
141151
142152 expect ( matrixScope . getByText ( 'Library' ) ) . toBeInTheDocument ( ) ;
@@ -152,4 +162,11 @@ describe('LibrariesTeamManager', () => {
152162 // TODO: Update expected URL when dedicated Manage Access page is created
153163 expect ( navLink ) . toHaveAttribute ( 'href' , '/authz/libraries/lib-001' ) ;
154164 } ) ;
165+
166+ it ( 'navigates to assign role wizard when "Assign Role" button is clicked' , async ( ) => {
167+ const user = userEvent . setup ( ) ;
168+ renderTeamManager ( ) ;
169+ await user . click ( screen . getByRole ( 'button' , { name : 'Assign Role' } ) ) ;
170+ expect ( mockNavigate ) . toHaveBeenCalledWith ( '/authz/assign-role?scope=lib-001' ) ;
171+ } ) ;
155172} ) ;
0 commit comments