@@ -2,7 +2,9 @@ import { useSelector } from 'react-redux';
22import { getConfig , setConfig } from '@edx/frontend-platform' ;
33import { renderHook } from '@testing-library/react' ;
44import messages from './messages' ;
5- import { useContentMenuItems , useToolsMenuItems , useSettingMenuItems } from './hooks' ;
5+ import {
6+ useContentMenuItems , useToolsMenuItems , useSettingMenuItems , useLibrarySettingsMenuItems , useLibraryToolsMenuItems ,
7+ } from './hooks' ;
68import { mockWaffleFlags } from '../data/apiHooks.mock' ;
79
810jest . mock ( '@edx/frontend-platform/i18n' , ( ) => ( {
@@ -28,7 +30,7 @@ jest.mock('react-redux', () => ({
2830describe ( 'header utils' , ( ) => {
2931 describe ( 'getContentMenuItems' , ( ) => {
3032 it ( 'when video upload page enabled should include Video Uploads option' , ( ) => {
31- useSelector . mockReturnValue ( {
33+ jest . mocked ( useSelector ) . mockReturnValue ( {
3234 librariesV2Enabled : false ,
3335 } ) ;
3436 setConfig ( {
@@ -39,7 +41,7 @@ describe('header utils', () => {
3941 expect ( actualItems ) . toHaveLength ( 5 ) ;
4042 } ) ;
4143 it ( 'when video upload page disabled should not include Video Uploads option' , ( ) => {
42- useSelector . mockReturnValue ( {
44+ jest . mocked ( useSelector ) . mockReturnValue ( {
4345 librariesV2Enabled : false ,
4446 } ) ;
4547 setConfig ( {
@@ -50,7 +52,7 @@ describe('header utils', () => {
5052 expect ( actualItems ) . toHaveLength ( 4 ) ;
5153 } ) ;
5254 it ( 'adds course libraries link to content menu when libraries v2 is enabled' , ( ) => {
53- useSelector . mockReturnValue ( {
55+ jest . mocked ( useSelector ) . mockReturnValue ( {
5456 librariesV2Enabled : true ,
5557 } ) ;
5658 const actualItems = renderHook ( ( ) => useContentMenuItems ( 'course-123' ) ) . result . current ;
@@ -60,7 +62,7 @@ describe('header utils', () => {
6062
6163 describe ( 'getSettingsMenuitems' , ( ) => {
6264 beforeEach ( ( ) => {
63- useSelector . mockReturnValue ( {
65+ jest . mocked ( useSelector ) . mockReturnValue ( {
6466 canAccessAdvancedSettings : true ,
6567 } ) ;
6668 } ) ;
@@ -86,7 +88,7 @@ describe('header utils', () => {
8688 expect ( actualItemsTitle ) . toContain ( 'Advanced Settings' ) ;
8789 } ) ;
8890 it ( 'when user has no access to advanced settings should not include advanced settings option' , ( ) => {
89- useSelector . mockReturnValue ( { canAccessAdvancedSettings : false } ) ;
91+ jest . mocked ( useSelector ) . mockReturnValue ( { canAccessAdvancedSettings : false } ) ;
9092 const actualItemsTitle = renderHook ( ( ) => useSettingMenuItems ( 'course-123' ) ) . result . current . map ( ( item ) => item . title ) ;
9193 expect ( actualItemsTitle ) . not . toContain ( 'Advanced Settings' ) ;
9294 } ) ;
@@ -137,4 +139,44 @@ describe('header utils', () => {
137139 expect ( actualItemsTitle ) . not . toContain ( messages [ 'header.links.optimizer' ] . defaultMessage ) ;
138140 } ) ;
139141 } ) ;
142+
143+ describe ( 'useLibrarySettingsMenuItems' , ( ) => {
144+ it ( 'should contain team access url' , ( ) => {
145+ const items = renderHook ( ( ) => useLibrarySettingsMenuItems ( 'library-123' , false ) ) . result . current ;
146+ expect ( items ) . toContainEqual ( { title : 'Team Access' , href : 'http://localhost/?sa=manage-team' } ) ;
147+ } ) ;
148+ it ( 'should contain admin console url if set' , ( ) => {
149+ setConfig ( {
150+ ...getConfig ( ) ,
151+ ADMIN_CONSOLE_URL : 'http://admin-console.com' ,
152+ } ) ;
153+ const items = renderHook ( ( ) => useLibrarySettingsMenuItems ( 'library-123' , false ) ) . result . current ;
154+ expect ( items ) . toContainEqual ( {
155+ title : 'Team Access' ,
156+ href : 'http://admin-console.com/authz/libraries/library-123' ,
157+ } ) ;
158+ } ) ;
159+ it ( 'should contain admin console url if set and readOnly is true' , ( ) => {
160+ setConfig ( {
161+ ...getConfig ( ) ,
162+ ADMIN_CONSOLE_URL : 'http://admin-console.com' ,
163+ } ) ;
164+ const items = renderHook ( ( ) => useLibrarySettingsMenuItems ( 'library-123' , true ) ) . result . current ;
165+ expect ( items ) . toContainEqual ( {
166+ title : 'Team Access' ,
167+ href : 'http://admin-console.com/authz/libraries/library-123' ,
168+ } ) ;
169+ } ) ;
170+ } ) ;
171+
172+ describe ( 'useLibraryToolsMenuItems' , ( ) => {
173+ it ( 'should contain backup and import url' , ( ) => {
174+ const items = renderHook ( ( ) => useLibraryToolsMenuItems ( 'course-123' ) ) . result . current ;
175+ expect ( items ) . toContainEqual ( {
176+ href : '/library/course-123/backup' ,
177+ title : 'Backup to local archive' ,
178+ } ) ;
179+ expect ( items ) . toContainEqual ( { href : '/library/course-123/import' , title : 'Import' } ) ;
180+ } ) ;
181+ } ) ;
140182} ) ;
0 commit comments