Skip to content

Commit 75602b8

Browse files
committed
refactor: clean up tests by removing unused cases
1 parent 5219484 commit 75602b8

3 files changed

Lines changed: 6 additions & 208 deletions

File tree

src/authz-module/constants.test.ts

Lines changed: 6 additions & 160 deletions
Original file line numberDiff line numberDiff line change
@@ -2,105 +2,31 @@ import {
22
getRolesMetadata,
33
getPermissions,
44
getResourceTypes,
5-
RESOURCE_TYPES,
6-
RoleOperationErrorStatus,
7-
ROUTES,
8-
libraryRolesMetadata,
95
courseRolesMetadata,
10-
libraryPermissions,
11-
libraryResourceTypes,
12-
CONTENT_LIBRARY_PERMISSIONS,
13-
COURSE_PERMISSIONS,
146
} from './constants';
157

16-
describe('ROUTES', () => {
17-
it('defines the expected paths', () => {
18-
expect(ROUTES.LIBRARIES_TEAM_PATH).toBe('/libraries/:libraryId');
19-
expect(ROUTES.LIBRARIES_USER_PATH).toBe('/libraries/:libraryId/:username');
20-
expect(ROUTES.ASSIGN_ROLE_WIZARD_PATH).toBe('/assign-role');
21-
});
22-
});
23-
24-
describe('RoleOperationErrorStatus', () => {
25-
it('has expected enum values', () => {
26-
expect(RoleOperationErrorStatus.USER_NOT_FOUND).toBe('user_not_found');
27-
expect(RoleOperationErrorStatus.USER_ALREADY_HAS_ROLE).toBe('user_already_has_role');
28-
expect(RoleOperationErrorStatus.USER_DOES_NOT_HAVE_ROLE).toBe('user_does_not_have_role');
29-
expect(RoleOperationErrorStatus.ROLE_ASSIGNMENT_ERROR).toBe('role_assignment_error');
30-
expect(RoleOperationErrorStatus.ROLE_REMOVAL_ERROR).toBe('role_removal_error');
31-
});
32-
});
33-
348
describe('getRolesMetadata', () => {
35-
it('returns library roles for LIBRARY resource type', () => {
36-
expect(getRolesMetadata(RESOURCE_TYPES.LIBRARY)).toEqual(libraryRolesMetadata);
37-
expect(getRolesMetadata(RESOURCE_TYPES.LIBRARY)).toHaveLength(4);
38-
});
39-
40-
it('returns course roles for COURSE resource type', () => {
41-
expect(getRolesMetadata(RESOURCE_TYPES.COURSE)).toEqual(courseRolesMetadata);
42-
expect(getRolesMetadata(RESOURCE_TYPES.COURSE)).toHaveLength(4);
43-
});
44-
459
it('returns empty array for unknown resource type', () => {
4610
// @ts-expect-error testing invalid input
4711
expect(getRolesMetadata('unknown')).toEqual([]);
4812
});
4913
});
5014

5115
describe('getPermissions', () => {
52-
it('returns library permissions for LIBRARY resource type', () => {
53-
expect(getPermissions(RESOURCE_TYPES.LIBRARY)).toEqual(libraryPermissions);
54-
expect(getPermissions(RESOURCE_TYPES.LIBRARY).length).toBeGreaterThan(0);
55-
});
56-
57-
it('returns empty array for COURSE resource type', () => {
58-
expect(getPermissions(RESOURCE_TYPES.COURSE)).toEqual([]);
16+
it('returns empty array for unknown resource type', () => {
17+
// @ts-expect-error testing invalid input
18+
expect(getPermissions('unknown')).toEqual([]);
5919
});
6020
});
6121

6222
describe('getResourceTypes', () => {
63-
it('returns library resource types for LIBRARY resource type', () => {
64-
expect(getResourceTypes(RESOURCE_TYPES.LIBRARY)).toEqual(libraryResourceTypes);
65-
expect(getResourceTypes(RESOURCE_TYPES.LIBRARY)).toHaveLength(4);
66-
});
67-
68-
it('returns empty array for COURSE resource type', () => {
69-
expect(getResourceTypes(RESOURCE_TYPES.COURSE)).toEqual([]);
70-
});
71-
});
72-
73-
describe('libraryRolesMetadata', () => {
74-
it('includes all expected library roles', () => {
75-
const roles = libraryRolesMetadata.map((r) => r.role);
76-
expect(roles).toContain('library_admin');
77-
expect(roles).toContain('library_author');
78-
expect(roles).toContain('library_contributor');
79-
expect(roles).toContain('library_user');
80-
});
81-
82-
it('all library roles have contextType "library"', () => {
83-
libraryRolesMetadata.forEach((r) => {
84-
expect(r.contextType).toBe('library');
85-
});
23+
it('returns empty array for unknown resource type', () => {
24+
// @ts-expect-error testing invalid input
25+
expect(getResourceTypes('unknown')).toEqual([]);
8626
});
8727
});
8828

8929
describe('courseRolesMetadata', () => {
90-
it('includes expected course roles', () => {
91-
const roles = courseRolesMetadata.map((r) => r.role);
92-
expect(roles).toContain('course_admin');
93-
expect(roles).toContain('course_staff');
94-
expect(roles).toContain('course_editor');
95-
expect(roles).toContain('course_auditor');
96-
});
97-
98-
it('all course roles have contextType "course"', () => {
99-
courseRolesMetadata.forEach((r) => {
100-
expect(r.contextType).toBe('course');
101-
});
102-
});
103-
10430
it('course_editor and course_auditor are disabled', () => {
10531
const editor = courseRolesMetadata.find((r) => r.role === 'course_editor');
10632
const auditor = courseRolesMetadata.find((r) => r.role === 'course_auditor');
@@ -115,83 +41,3 @@ describe('courseRolesMetadata', () => {
11541
expect(staff?.disabled).toBeUndefined();
11642
});
11743
});
118-
119-
describe('CONTENT_LIBRARY_PERMISSIONS', () => {
120-
it('defines all expected permission keys', () => {
121-
expect(CONTENT_LIBRARY_PERMISSIONS.DELETE_LIBRARY).toBe('content_libraries.delete_library');
122-
expect(CONTENT_LIBRARY_PERMISSIONS.MANAGE_LIBRARY_TAGS).toBe('content_libraries.manage_library_tags');
123-
expect(CONTENT_LIBRARY_PERMISSIONS.VIEW_LIBRARY).toBe('content_libraries.view_library');
124-
expect(CONTENT_LIBRARY_PERMISSIONS.EDIT_LIBRARY_CONTENT).toBe('content_libraries.edit_library_content');
125-
expect(CONTENT_LIBRARY_PERMISSIONS.PUBLISH_LIBRARY_CONTENT).toBe('content_libraries.publish_library_content');
126-
expect(CONTENT_LIBRARY_PERMISSIONS.REUSE_LIBRARY_CONTENT).toBe('content_libraries.reuse_library_content');
127-
expect(CONTENT_LIBRARY_PERMISSIONS.CREATE_LIBRARY_COLLECTION).toBe('content_libraries.create_library_collection');
128-
expect(CONTENT_LIBRARY_PERMISSIONS.EDIT_LIBRARY_COLLECTION).toBe('content_libraries.edit_library_collection');
129-
expect(CONTENT_LIBRARY_PERMISSIONS.DELETE_LIBRARY_COLLECTION).toBe('content_libraries.delete_library_collection');
130-
expect(CONTENT_LIBRARY_PERMISSIONS.MANAGE_LIBRARY_TEAM).toBe('content_libraries.manage_library_team');
131-
expect(CONTENT_LIBRARY_PERMISSIONS.VIEW_LIBRARY_TEAM).toBe('content_libraries.view_library_team');
132-
});
133-
});
134-
135-
describe('COURSE_PERMISSIONS', () => {
136-
it('defines view permissions', () => {
137-
expect(COURSE_PERMISSIONS.VIEW_COURSE).toBe('courses.view_course');
138-
expect(COURSE_PERMISSIONS.VIEW_COURSE_UPDATES).toBe('courses.view_course_updates');
139-
expect(COURSE_PERMISSIONS.VIEW_PAGES_AND_RESOURCES).toBe('courses.view_pages_and_resources');
140-
expect(COURSE_PERMISSIONS.VIEW_FILES).toBe('courses.view_files');
141-
expect(COURSE_PERMISSIONS.VIEW_GRADING_SETTINGS).toBe('courses.view_grading_settings');
142-
expect(COURSE_PERMISSIONS.VIEW_CHECKLISTS).toBe('courses.view_checklists');
143-
expect(COURSE_PERMISSIONS.VIEW_COURSE_TEAM).toBe('courses.view_course_team');
144-
expect(COURSE_PERMISSIONS.VIEW_SCHEDULE_AND_DETAILS).toBe('courses.view_schedule_and_details');
145-
});
146-
147-
it('defines edit permissions', () => {
148-
expect(COURSE_PERMISSIONS.EDIT_COURSE_CONTENT).toBe('courses.edit_course_content');
149-
expect(COURSE_PERMISSIONS.MANAGE_LIBRARY_UPDATES).toBe('courses.manage_library_updates');
150-
expect(COURSE_PERMISSIONS.MANAGE_COURSE_UPDATES).toBe('courses.manage_course_updates');
151-
expect(COURSE_PERMISSIONS.MANAGE_PAGES_AND_RESOURCES).toBe('courses.manage_pages_and_resources');
152-
expect(COURSE_PERMISSIONS.CREATE_FILES).toBe('courses.create_files');
153-
expect(COURSE_PERMISSIONS.EDIT_FILES).toBe('courses.edit_files');
154-
expect(COURSE_PERMISSIONS.EDIT_GRADING_SETTINGS).toBe('courses.edit_grading_settings');
155-
expect(COURSE_PERMISSIONS.MANAGE_GROUP_CONFIGURATIONS).toBe('courses.manage_group_configurations');
156-
expect(COURSE_PERMISSIONS.EDIT_DETAILS).toBe('courses.edit_details');
157-
expect(COURSE_PERMISSIONS.MANAGE_TAGS).toBe('courses.manage_tags');
158-
});
159-
160-
it('defines publish and lifecycle permissions', () => {
161-
expect(COURSE_PERMISSIONS.PUBLISH_COURSE_CONTENT).toBe('courses.publish_course_content');
162-
expect(COURSE_PERMISSIONS.DELETE_FILES).toBe('courses.delete_files');
163-
expect(COURSE_PERMISSIONS.EDIT_SCHEDULE).toBe('courses.edit_schedule');
164-
expect(COURSE_PERMISSIONS.MANAGE_ADVANCED_SETTINGS).toBe('courses.manage_advanced_settings');
165-
expect(COURSE_PERMISSIONS.MANAGE_CERTIFICATES).toBe('courses.manage_certificates');
166-
expect(COURSE_PERMISSIONS.IMPORT_COURSE).toBe('courses.import_course');
167-
expect(COURSE_PERMISSIONS.EXPORT_COURSE).toBe('courses.export_course');
168-
expect(COURSE_PERMISSIONS.EXPORT_TAGS).toBe('courses.export_tags');
169-
});
170-
171-
it('defines team and taxonomy permissions', () => {
172-
expect(COURSE_PERMISSIONS.MANAGE_COURSE_TEAM).toBe('courses.manage_course_team');
173-
expect(COURSE_PERMISSIONS.MANAGE_TAXONOMIES).toBe('courses.manage_taxonomies');
174-
});
175-
176-
it('defines legacy role permissions', () => {
177-
expect(COURSE_PERMISSIONS.LEGACY_STAFF_ROLE_PERMISSIONS).toBe('courses.legacy_staff_role_permissions');
178-
expect(COURSE_PERMISSIONS.LEGACY_INSTRUCTOR_ROLE_PERMISSIONS).toBe('courses.legacy_instructor_role_permissions');
179-
expect(COURSE_PERMISSIONS.LEGACY_LIMITED_STAFF_ROLE_PERMISSIONS).toBe('courses.legacy_limited_staff_role_permissions');
180-
expect(COURSE_PERMISSIONS.LEGACY_DATA_RESEARCHER_PERMISSIONS).toBe('courses.legacy_data_researcher_permissions');
181-
expect(COURSE_PERMISSIONS.LEGACY_BETA_TESTER_PERMISSIONS).toBe('courses.legacy_beta_tester_permissions');
182-
});
183-
});
184-
185-
describe('getPermissions default case', () => {
186-
it('returns empty array for unknown resource type', () => {
187-
// @ts-expect-error testing invalid input
188-
expect(getPermissions('unknown')).toEqual([]);
189-
});
190-
});
191-
192-
describe('getResourceTypes default case', () => {
193-
it('returns empty array for unknown resource type', () => {
194-
// @ts-expect-error testing invalid input
195-
expect(getResourceTypes('unknown')).toEqual([]);
196-
});
197-
});

src/authz-module/data/api.test.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -117,15 +117,6 @@ describe('validateUsers', () => {
117117
);
118118
expect(result).toEqual(mockResponse);
119119
});
120-
121-
it('returns empty lists when all users are valid', async () => {
122-
const mockResponse = { validUsers: ['jdoe', 'alice'], invalidUsers: [] };
123-
mockPost.mockResolvedValue({ data: mockResponse });
124-
125-
const result = await validateUsers({ users: ['jdoe', 'alice'] });
126-
expect(result.invalidUsers).toHaveLength(0);
127-
expect(result.validUsers).toHaveLength(2);
128-
});
129120
});
130121

131122
describe('getLibrary', () => {

src/authz-module/wizard/AssignRoleWizard.test.tsx

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -344,22 +344,6 @@ describe('AssignRoleWizard', () => {
344344
expect(screen.getByRole('button', { name: /Save/i })).toBeDisabled();
345345
});
346346

347-
it('does not call validateUsers when users list is empty', async () => {
348-
const user = userEvent.setup();
349-
renderWizard();
350-
// Only select role, no users
351-
await user.click(screen.getByTestId('select-role'));
352-
await user.click(screen.getByRole('button', { name: /Next/i }));
353-
// Button should be disabled, so click won't trigger mutation
354-
expect(mockValidateMutateAsync).not.toHaveBeenCalled();
355-
});
356-
357-
it('Back button is always rendered (step 2 action row)', () => {
358-
renderWizard();
359-
// With mocked Stepper, both action rows are visible
360-
expect(screen.getByRole('button', { name: /Back/i })).toBeInTheDocument();
361-
});
362-
363347
it('Next button is disabled when validateUsers mutation is pending', async () => {
364348
mockUseValidateUsers.mockReturnValue({
365349
mutateAsync: mockValidateMutateAsync,
@@ -381,27 +365,4 @@ describe('AssignRoleWizard', () => {
381365
await user.click(screen.getByTestId('toggle-scope'));
382366
expect(await screen.findByRole('button', { name: /Saving/i })).toBeDisabled();
383367
});
384-
385-
it('Back button navigates to step 1 when clicked', async () => {
386-
const user = userEvent.setup();
387-
renderWizard();
388-
// Back button is always visible in mock; clicking it should not throw
389-
await user.click(screen.getByRole('button', { name: /Back/i }));
390-
// Step 1 content (users-input) remains in the document (mock renders all steps)
391-
expect(screen.getByTestId('users-input')).toBeInTheDocument();
392-
});
393-
394-
it('clicking step 1 header sets active step to select-users-and-role', async () => {
395-
const user = userEvent.setup();
396-
renderWizard();
397-
await user.click(screen.getByTestId('step-header-select-users-and-role'));
398-
expect(screen.getByTestId('users-input')).toBeInTheDocument();
399-
});
400-
401-
it('clicking step 2 header sets active step to define-application-scope', async () => {
402-
const user = userEvent.setup();
403-
renderWizard();
404-
await user.click(screen.getByTestId('step-header-define-application-scope'));
405-
expect(screen.getByTestId('toggle-scope')).toBeInTheDocument();
406-
});
407368
});

0 commit comments

Comments
 (0)