@@ -27,13 +27,21 @@ import ScheduleAndDetails from '.';
2727jest . mock ( '@src/authz/hooks' , ( ) => ( {
2828 useCourseUserPermissions : jest . fn ( ) . mockReturnValue ( {
2929 isLoading : false ,
30- isAuthzEnabled : true ,
3130 canViewScheduleAndDetails : true ,
3231 canEditSchedule : true ,
3332 canEditDetails : true ,
3433 } ) ,
3534} ) ) ;
3635
36+ const mockPermissions = ( overrides = { } ) =>
37+ jest . mocked ( useCourseUserPermissions ) . mockReturnValue ( {
38+ isLoading : false ,
39+ canViewScheduleAndDetails : true ,
40+ canEditSchedule : true ,
41+ canEditDetails : true ,
42+ ...overrides ,
43+ } ) ;
44+
3745let axiosMock ;
3846let store ;
3947const courseId = '123' ;
@@ -191,13 +199,7 @@ describe('<ScheduleAndDetails /> permissions', () => {
191199 axiosMock . onGet ( getCourseDetailsApiUrl ( courseId ) ) . reply ( 200 , courseDetailsMock ) ;
192200 axiosMock . onGet ( getCourseSettingsApiUrl ( courseId ) ) . reply ( 200 , courseSettingsMock ) ;
193201 axiosMock . onPut ( getCourseDetailsApiUrl ( courseId ) ) . reply ( 200 ) ;
194- jest . mocked ( useCourseUserPermissions ) . mockReturnValue ( {
195- isLoading : false ,
196- isAuthzEnabled : true ,
197- canViewScheduleAndDetails : true ,
198- canEditSchedule : true ,
199- canEditDetails : true ,
200- } ) ;
202+ mockPermissions ( ) ;
201203 } ) ;
202204
203205 it ( 'renders normally when authz flag is disabled (no regression)' , async ( ) => {
@@ -218,13 +220,7 @@ describe('<ScheduleAndDetails /> permissions', () => {
218220
219221 it ( 'shows PermissionDeniedAlert when user lacks view permission' , async ( ) => {
220222 mockWaffleFlags ( { enableAuthzCourseAuthoring : true } ) ;
221- jest . mocked ( useCourseUserPermissions ) . mockReturnValue ( {
222- isLoading : false ,
223- isAuthzEnabled : true ,
224- canViewScheduleAndDetails : false ,
225- canEditSchedule : false ,
226- canEditDetails : false ,
227- } ) ;
223+ mockPermissions ( { canViewScheduleAndDetails : false , canEditSchedule : false , canEditDetails : false } ) ;
228224 const { getByTestId } = renderComponent ( ) ;
229225 await waitFor ( ( ) => {
230226 expect ( getByTestId ( 'permissionDeniedAlert' ) ) . toBeInTheDocument ( ) ;
@@ -233,13 +229,7 @@ describe('<ScheduleAndDetails /> permissions', () => {
233229
234230 it ( 'disables schedule date inputs when user lacks edit_schedule permission' , async ( ) => {
235231 mockWaffleFlags ( { enableAuthzCourseAuthoring : true } ) ;
236- jest . mocked ( useCourseUserPermissions ) . mockReturnValue ( {
237- isLoading : false ,
238- isAuthzEnabled : true ,
239- canViewScheduleAndDetails : true ,
240- canEditSchedule : false ,
241- canEditDetails : true ,
242- } ) ;
232+ mockPermissions ( { canEditSchedule : false } ) ;
243233 const { getAllByPlaceholderText } = renderComponent ( ) ;
244234 await waitFor ( ( ) => {
245235 const dateInputs = getAllByPlaceholderText ( DATE_FORMAT . toLocaleUpperCase ( ) ) ;
@@ -249,13 +239,7 @@ describe('<ScheduleAndDetails /> permissions', () => {
249239
250240 it ( 'disables pacing and details inputs when user lacks edit_details permission' , async ( ) => {
251241 mockWaffleFlags ( { enableAuthzCourseAuthoring : true } ) ;
252- jest . mocked ( useCourseUserPermissions ) . mockReturnValue ( {
253- isLoading : false ,
254- isAuthzEnabled : true ,
255- canViewScheduleAndDetails : true ,
256- canEditSchedule : true ,
257- canEditDetails : false ,
258- } ) ;
242+ mockPermissions ( { canEditDetails : false } ) ;
259243 const { getAllByRole } = renderComponent ( ) ;
260244 await waitFor ( ( ) => {
261245 const radios = getAllByRole ( 'radio' ) ;
@@ -265,13 +249,7 @@ describe('<ScheduleAndDetails /> permissions', () => {
265249
266250 it ( 'save button cannot be triggered when user has no edit permissions' , async ( ) => {
267251 mockWaffleFlags ( { enableAuthzCourseAuthoring : true } ) ;
268- jest . mocked ( useCourseUserPermissions ) . mockReturnValue ( {
269- isLoading : false ,
270- isAuthzEnabled : true ,
271- canViewScheduleAndDetails : true ,
272- canEditSchedule : false ,
273- canEditDetails : false ,
274- } ) ;
252+ mockPermissions ( { canEditSchedule : false , canEditDetails : false } ) ;
275253 const { getAllByPlaceholderText, queryByText } = renderComponent ( ) ;
276254 // Wait for page to load
277255 const dateInputs = await waitFor ( ( ) => getAllByPlaceholderText ( DATE_FORMAT . toLocaleUpperCase ( ) ) ) ;
0 commit comments