diff --git a/README.rst b/README.rst
index 6f1de194b4..d0680a32e5 100644
--- a/README.rst
+++ b/README.rst
@@ -267,8 +267,6 @@ Tagging/Taxonomy functionality.
Feature: Libraries V2/Legacy Tabs
=================================
-.. image:: ./docs/readme-images/feature-v2-and-legacy-libs.png
-
Configuration
-------------
diff --git a/docs/readme-images/feature-v2-and-legacy-libs.png b/docs/readme-images/feature-v2-and-legacy-libs.png
deleted file mode 100644
index c8fd363655..0000000000
Binary files a/docs/readme-images/feature-v2-and-legacy-libs.png and /dev/null differ
diff --git a/plugins/course-apps/proctoring/Settings.test.jsx b/plugins/course-apps/proctoring/Settings.test.jsx
index bd544ebb3b..c4455be4ed 100644
--- a/plugins/course-apps/proctoring/Settings.test.jsx
+++ b/plugins/course-apps/proctoring/Settings.test.jsx
@@ -103,9 +103,7 @@ describe('ProctoredExamSettings', () => {
screen.getByDisplayValue('mockproc');
});
const selectElement = screen.getByDisplayValue('mockproc');
- await act(async () => {
- fireEvent.change(selectElement, { target: { value: 'proctortrack' } });
- });
+ fireEvent.change(selectElement, { target: { value: 'proctortrack' } });
const zendeskTicketInput = screen.getByTestId('createZendeskTicketsNo');
expect(zendeskTicketInput.checked).toEqual(true);
});
@@ -115,9 +113,7 @@ describe('ProctoredExamSettings', () => {
screen.getByDisplayValue('mockproc');
});
const selectElement = screen.getByDisplayValue('mockproc');
- await act(async () => {
- fireEvent.change(selectElement, { target: { value: 'software_secure' } });
- });
+ fireEvent.change(selectElement, { target: { value: 'software_secure' } });
const zendeskTicketInput = screen.getByTestId('createZendeskTicketsYes');
expect(zendeskTicketInput.checked).toEqual(true);
});
@@ -127,9 +123,7 @@ describe('ProctoredExamSettings', () => {
screen.getByDisplayValue('mockproc');
});
const selectElement = screen.getByDisplayValue('mockproc');
- await act(async () => {
- fireEvent.change(selectElement, { target: { value: 'mockproc' } });
- });
+ fireEvent.change(selectElement, { target: { value: 'mockproc' } });
const zendeskTicketInput = screen.getByTestId('createZendeskTicketsYes');
expect(zendeskTicketInput.checked).toEqual(true);
});
@@ -176,9 +170,7 @@ describe('ProctoredExamSettings', () => {
let enabledProctoredExamCheck = screen.getAllByLabelText('Proctored exams', { exact: false })[0];
expect(enabledProctoredExamCheck.checked).toEqual(true);
- await act(async () => {
- fireEvent.click(enabledProctoredExamCheck, { target: { value: false } });
- });
+ fireEvent.click(enabledProctoredExamCheck, { target: { value: false } });
enabledProctoredExamCheck = screen.getByLabelText('Proctored exams');
expect(enabledProctoredExamCheck.checked).toEqual(false);
expect(screen.queryByText('Allow opting out of proctored exams')).toBeNull();
@@ -193,9 +185,7 @@ describe('ProctoredExamSettings', () => {
screen.getByDisplayValue('mockproc');
});
const selectElement = screen.getByDisplayValue('mockproc');
- await act(async () => {
- fireEvent.change(selectElement, { target: { value: 'test_lti' } });
- });
+ fireEvent.change(selectElement, { target: { value: 'test_lti' } });
expect(screen.queryByTestId('allowOptingOutRadio')).toBeNull();
expect(screen.queryByTestId('createZendeskTicketsYes')).toBeNull();
expect(screen.queryByTestId('createZendeskTicketsNo')).toBeNull();
@@ -237,13 +227,9 @@ describe('ProctoredExamSettings', () => {
screen.getByDisplayValue('proctortrack');
});
const selectEscalationEmailElement = screen.getByDisplayValue('test@example.com');
- await act(async () => {
- fireEvent.change(selectEscalationEmailElement, { target: { value: '' } });
- });
+ fireEvent.change(selectEscalationEmailElement, { target: { value: '' } });
const selectButton = screen.getByTestId('submissionButton');
- await act(async () => {
- fireEvent.click(selectButton);
- });
+ fireEvent.click(selectButton);
// verify alert content and focus management
const escalationEmailError = screen.getByTestId('escalationEmailError');
@@ -252,9 +238,7 @@ describe('ProctoredExamSettings', () => {
// verify alert link links to offending input
const errorLink = screen.getByTestId('escalationEmailErrorLink');
- await act(async () => {
- fireEvent.click(errorLink);
- });
+ fireEvent.click(errorLink);
const escalationEmailInput = screen.getByTestId('escalationEmail');
expect(document.activeElement).toEqual(escalationEmailInput);
});
@@ -265,18 +249,12 @@ describe('ProctoredExamSettings', () => {
});
const selectElement = screen.getByDisplayValue('proctortrack');
- await act(async () => {
- fireEvent.change(selectElement, { target: { value: provider } });
- });
+ fireEvent.change(selectElement, { target: { value: provider } });
const selectEscalationEmailElement = screen.getByDisplayValue('test@example.com');
- await act(async () => {
- fireEvent.change(selectEscalationEmailElement, { target: { value: 'foo.bar' } });
- });
- const selectButton = screen.getByTestId('submissionButton');
- await act(async () => {
- fireEvent.click(selectButton);
- });
+ fireEvent.change(selectEscalationEmailElement, { target: { value: 'foo.bar' } });
+ const proctoringForm = screen.getByTestId('proctoringForm');
+ fireEvent.submit(proctoringForm);
// verify alert content and focus management
const escalationEmailError = screen.getByTestId('escalationEmailError');
@@ -286,9 +264,7 @@ describe('ProctoredExamSettings', () => {
// verify alert link links to offending input
const errorLink = screen.getByTestId('escalationEmailErrorLink');
- await act(async () => {
- fireEvent.click(errorLink);
- });
+ fireEvent.click(errorLink);
const escalationEmailInput = screen.getByTestId('escalationEmail');
expect(document.activeElement).toEqual(escalationEmailInput);
});
@@ -298,15 +274,11 @@ describe('ProctoredExamSettings', () => {
screen.getByDisplayValue('proctortrack');
});
const selectEscalationEmailElement = screen.getByDisplayValue('test@example.com');
- await act(async () => {
- fireEvent.change(selectEscalationEmailElement, { target: { value: 'foo.bar' } });
- });
+ fireEvent.change(selectEscalationEmailElement, { target: { value: 'foo.bar' } });
const enableProctoringElement = screen.getByText('Proctored exams');
- await act(async () => fireEvent.click(enableProctoringElement));
+ fireEvent.click(enableProctoringElement);
const selectButton = screen.getByTestId('submissionButton');
- await act(async () => {
- fireEvent.click(selectButton);
- });
+ fireEvent.click(selectButton);
// verify alert content and focus management
const escalationEmailError = screen.getByTestId('escalationEmailError');
@@ -320,24 +292,22 @@ describe('ProctoredExamSettings', () => {
screen.getByDisplayValue('proctortrack');
});
const selectEscalationEmailElement = screen.getByDisplayValue('test@example.com');
- await act(async () => {
- fireEvent.change(selectEscalationEmailElement, { target: { value: '' } });
- });
+ fireEvent.change(selectEscalationEmailElement, { target: { value: '' } });
const enableProctoringElement = screen.getByText('Proctored exams');
- await act(async () => fireEvent.click(enableProctoringElement));
+ fireEvent.click(enableProctoringElement);
const selectButton = screen.getByTestId('submissionButton');
- await act(async () => {
- fireEvent.click(selectButton);
- });
+ fireEvent.click(selectButton);
// verify there is no escalation email alert, and focus has been set on save success alert
expect(screen.queryByTestId('escalationEmailError')).toBeNull();
- const errorAlert = screen.getByTestId('saveSuccess');
- expect(errorAlert.textContent).toEqual(
- expect.stringContaining('Proctored exam settings saved successfully.'),
- );
- expect(document.activeElement).toEqual(errorAlert);
+ await waitFor(() => {
+ const errorAlert = screen.getByTestId('saveSuccess');
+ expect(errorAlert.textContent).toEqual(
+ expect.stringContaining('Proctored exam settings saved successfully.'),
+ );
+ expect(document.activeElement).toEqual(errorAlert);
+ });
});
it(`Has no error when valid proctoring escalation email is provided with ${provider} selected`, async () => {
@@ -345,22 +315,20 @@ describe('ProctoredExamSettings', () => {
screen.getByDisplayValue('proctortrack');
});
const selectEscalationEmailElement = screen.getByDisplayValue('test@example.com');
- await act(async () => {
- fireEvent.change(selectEscalationEmailElement, { target: { value: 'foo@bar.com' } });
- });
+ fireEvent.change(selectEscalationEmailElement, { target: { value: 'foo@bar.com' } });
const selectButton = screen.getByTestId('submissionButton');
- await act(async () => {
- fireEvent.click(selectButton);
- });
+ fireEvent.click(selectButton);
// verify there is no escalation email alert, and focus has been set on save success alert
expect(screen.queryByTestId('escalationEmailError')).toBeNull();
- const errorAlert = screen.getByTestId('saveSuccess');
- expect(errorAlert.textContent).toEqual(
- expect.stringContaining('Proctored exam settings saved successfully.'),
- );
- expect(document.activeElement).toEqual(errorAlert);
+ await waitFor(() => {
+ const errorAlert = screen.getByTestId('saveSuccess');
+ expect(errorAlert.textContent).toEqual(
+ expect.stringContaining('Proctored exam settings saved successfully.'),
+ );
+ expect(document.activeElement).toEqual(errorAlert);
+ });
});
it(`Escalation email field hidden when proctoring backend is not ${provider}`, async () => {
@@ -370,9 +338,7 @@ describe('ProctoredExamSettings', () => {
const proctoringBackendSelect = screen.getByDisplayValue('proctortrack');
const selectEscalationEmailElement = screen.getByTestId('escalationEmail');
expect(selectEscalationEmailElement.value).toEqual('test@example.com');
- await act(async () => {
- fireEvent.change(proctoringBackendSelect, { target: { value: 'software_secure' } });
- });
+ fireEvent.change(proctoringBackendSelect, { target: { value: 'software_secure' } });
expect(screen.queryByTestId('escalationEmail')).toBeNull();
});
@@ -382,13 +348,9 @@ describe('ProctoredExamSettings', () => {
});
const proctoringBackendSelect = screen.getByDisplayValue('proctortrack');
let selectEscalationEmailElement = screen.getByTestId('escalationEmail');
- await act(async () => {
- fireEvent.change(proctoringBackendSelect, { target: { value: 'software_secure' } });
- });
+ fireEvent.change(proctoringBackendSelect, { target: { value: 'software_secure' } });
expect(screen.queryByTestId('escalationEmail')).toBeNull();
- await act(async () => {
- fireEvent.change(proctoringBackendSelect, { target: { value: 'proctortrack' } });
- });
+ fireEvent.change(proctoringBackendSelect, { target: { value: 'proctortrack' } });
expect(screen.queryByTestId('escalationEmail')).toBeDefined();
selectEscalationEmailElement = screen.getByTestId('escalationEmail');
expect(selectEscalationEmailElement.value).toEqual('test@example.com');
@@ -399,12 +361,8 @@ describe('ProctoredExamSettings', () => {
screen.getByDisplayValue('proctortrack');
});
const selectEscalationEmailElement = screen.getByDisplayValue('test@example.com');
- await act(async () => {
- fireEvent.change(selectEscalationEmailElement, { target: { value: '' } });
- });
- await act(async () => {
- fireEvent.submit(selectEscalationEmailElement);
- });
+ fireEvent.change(selectEscalationEmailElement, { target: { value: '' } });
+ fireEvent.submit(selectEscalationEmailElement);
// if the error appears, the form has been submitted
expect(screen.getByTestId('escalationEmailError')).toBeDefined();
});
@@ -628,9 +586,7 @@ describe('ProctoredExamSettings', () => {
await act(async () => render(intlWrapper()));
let submitButton = screen.getByTestId('submissionButton');
expect(screen.queryByTestId('saveInProgress')).toBeFalsy();
- act(() => {
- fireEvent.click(submitButton);
- });
+ fireEvent.click(submitButton);
submitButton = screen.getByTestId('submissionButton');
expect(submitButton).toHaveAttribute('disabled');
@@ -640,19 +596,13 @@ describe('ProctoredExamSettings', () => {
await act(async () => render(intlWrapper()));
// Make a change to the provider to proctortrack and set the email
const selectElement = screen.getByDisplayValue('mockproc');
- await act(async () => {
- fireEvent.change(selectElement, { target: { value: 'proctortrack' } });
- });
+ fireEvent.change(selectElement, { target: { value: 'proctortrack' } });
const escalationEmail = screen.getByTestId('escalationEmail');
expect(escalationEmail.value).toEqual('test@example.com');
- await act(async () => {
- fireEvent.change(escalationEmail, { target: { value: 'proctortrack@example.com' } });
- });
+ fireEvent.change(escalationEmail, { target: { value: 'proctortrack@example.com' } });
expect(escalationEmail.value).toEqual('proctortrack@example.com');
const submitButton = screen.getByTestId('submissionButton');
- await act(async () => {
- fireEvent.click(submitButton);
- });
+ fireEvent.click(submitButton);
expect(axiosMock.history.post.length).toBe(1);
expect(JSON.parse(axiosMock.history.post[0].data)).toEqual({
proctored_exam_settings: {
@@ -664,11 +614,13 @@ describe('ProctoredExamSettings', () => {
},
});
- const errorAlert = screen.getByTestId('saveSuccess');
- expect(errorAlert.textContent).toEqual(
- expect.stringContaining('Proctored exam settings saved successfully.'),
- );
- expect(document.activeElement).toEqual(errorAlert);
+ await waitFor(() => {
+ const errorAlert = screen.getByTestId('saveSuccess');
+ expect(errorAlert.textContent).toEqual(
+ expect.stringContaining('Proctored exam settings saved successfully.'),
+ );
+ expect(document.activeElement).toEqual(errorAlert);
+ });
});
it('Makes API call successfully without proctoring_escalation_email if not proctortrack', async () => {
@@ -678,9 +630,7 @@ describe('ProctoredExamSettings', () => {
expect(screen.getByDisplayValue('mockproc')).toBeDefined();
const submitButton = screen.getByTestId('submissionButton');
- await act(async () => {
- fireEvent.click(submitButton);
- });
+ fireEvent.click(submitButton);
expect(axiosMock.history.post.length).toBe(1);
expect(JSON.parse(axiosMock.history.post[0].data)).toEqual({
proctored_exam_settings: {
@@ -691,32 +641,28 @@ describe('ProctoredExamSettings', () => {
},
});
- const errorAlert = screen.getByTestId('saveSuccess');
- expect(errorAlert.textContent).toEqual(
- expect.stringContaining('Proctored exam settings saved successfully.'),
- );
- expect(document.activeElement).toEqual(errorAlert);
+ await waitFor(() => {
+ const errorAlert = screen.getByTestId('saveSuccess');
+ expect(errorAlert.textContent).toEqual(
+ expect.stringContaining('Proctored exam settings saved successfully.'),
+ );
+ expect(document.activeElement).toEqual(errorAlert);
+ });
});
it('Successfully updates exam configuration and studio provider is set to "lti_external" for lti providers', async () => {
await act(async () => render(intlWrapper()));
// Make a change to the provider to test_lti and set the email
const selectElement = screen.getByDisplayValue('mockproc');
- await act(async () => {
- fireEvent.change(selectElement, { target: { value: 'test_lti' } });
- });
+ fireEvent.change(selectElement, { target: { value: 'test_lti' } });
const escalationEmail = screen.getByTestId('escalationEmail');
expect(escalationEmail.value).toEqual('test@example.com');
- await act(async () => {
- fireEvent.change(escalationEmail, { target: { value: 'test_lti@example.com' } });
- });
+ fireEvent.change(escalationEmail, { target: { value: 'test_lti@example.com' } });
expect(escalationEmail.value).toEqual('test_lti@example.com');
const submitButton = screen.getByTestId('submissionButton');
- await act(async () => {
- fireEvent.click(submitButton);
- });
+ fireEvent.click(submitButton);
// update exam service config
expect(axiosMock.history.patch.length).toBe(1);
@@ -736,19 +682,19 @@ describe('ProctoredExamSettings', () => {
},
});
- const errorAlert = screen.getByTestId('saveSuccess');
- expect(errorAlert.textContent).toEqual(
- expect.stringContaining('Proctored exam settings saved successfully.'),
- );
- expect(document.activeElement).toEqual(errorAlert);
+ await waitFor(() => {
+ const errorAlert = screen.getByTestId('saveSuccess');
+ expect(errorAlert.textContent).toEqual(
+ expect.stringContaining('Proctored exam settings saved successfully.'),
+ );
+ expect(document.activeElement).toEqual(errorAlert);
+ });
});
it('Sets exam service provider to null if a non-lti provider is selected', async () => {
await act(async () => render(intlWrapper()));
const submitButton = screen.getByTestId('submissionButton');
- await act(async () => {
- fireEvent.click(submitButton);
- });
+ fireEvent.click(submitButton);
// update exam service config
expect(axiosMock.history.patch.length).toBe(1);
expect(JSON.parse(axiosMock.history.patch[0].data)).toEqual({
@@ -766,11 +712,13 @@ describe('ProctoredExamSettings', () => {
},
});
- const errorAlert = screen.getByTestId('saveSuccess');
- expect(errorAlert.textContent).toEqual(
- expect.stringContaining('Proctored exam settings saved successfully.'),
- );
- expect(document.activeElement).toEqual(errorAlert);
+ await waitFor(() => {
+ const errorAlert = screen.getByTestId('saveSuccess');
+ expect(errorAlert.textContent).toEqual(
+ expect.stringContaining('Proctored exam settings saved successfully.'),
+ );
+ expect(document.activeElement).toEqual(errorAlert);
+ });
});
it('Does not update exam service if lti is not enabled in studio', async () => {
@@ -790,9 +738,7 @@ describe('ProctoredExamSettings', () => {
await act(async () => render(intlWrapper()));
const submitButton = screen.getByTestId('submissionButton');
- await act(async () => {
- fireEvent.click(submitButton);
- });
+ fireEvent.click(submitButton);
// does not update exam service config
expect(axiosMock.history.patch.length).toBe(0);
// does update studio
@@ -806,11 +752,13 @@ describe('ProctoredExamSettings', () => {
},
});
- const errorAlert = screen.getByTestId('saveSuccess');
- expect(errorAlert.textContent).toEqual(
- expect.stringContaining('Proctored exam settings saved successfully.'),
- );
- expect(document.activeElement).toEqual(errorAlert);
+ await waitFor(() => {
+ const errorAlert = screen.getByTestId('saveSuccess');
+ expect(errorAlert.textContent).toEqual(
+ expect.stringContaining('Proctored exam settings saved successfully.'),
+ );
+ expect(document.activeElement).toEqual(errorAlert);
+ });
});
it('Makes studio API call generated error', async () => {
@@ -820,15 +768,15 @@ describe('ProctoredExamSettings', () => {
await act(async () => render(intlWrapper()));
const submitButton = screen.getByTestId('submissionButton');
- await act(async () => {
- fireEvent.click(submitButton);
- });
+ fireEvent.click(submitButton);
expect(axiosMock.history.post.length).toBe(1);
- const errorAlert = screen.getByTestId('saveError');
- expect(errorAlert.textContent).toEqual(
- expect.stringContaining('We encountered a technical error while trying to save proctored exam settings'),
- );
- expect(document.activeElement).toEqual(errorAlert);
+ await waitFor(() => {
+ const errorAlert = screen.getByTestId('saveError');
+ expect(errorAlert.textContent).toEqual(
+ expect.stringContaining('We encountered a technical error while trying to save proctored exam settings'),
+ );
+ expect(document.activeElement).toEqual(errorAlert);
+ });
});
it('Makes exams API call generated error', async () => {
@@ -838,15 +786,15 @@ describe('ProctoredExamSettings', () => {
await act(async () => render(intlWrapper()));
const submitButton = screen.getByTestId('submissionButton');
- await act(async () => {
- fireEvent.click(submitButton);
- });
+ fireEvent.click(submitButton);
expect(axiosMock.history.post.length).toBe(1);
- const errorAlert = screen.getByTestId('saveError');
- expect(errorAlert.textContent).toEqual(
- expect.stringContaining('We encountered a technical error while trying to save proctored exam settings'),
- );
- expect(document.activeElement).toEqual(errorAlert);
+ await waitFor(() => {
+ const errorAlert = screen.getByTestId('saveError');
+ expect(errorAlert.textContent).toEqual(
+ expect.stringContaining('We encountered a technical error while trying to save proctored exam settings'),
+ );
+ expect(document.activeElement).toEqual(errorAlert);
+ });
});
it('Manages focus correctly after different save statuses', async () => {
@@ -857,30 +805,30 @@ describe('ProctoredExamSettings', () => {
await act(async () => render(intlWrapper()));
const submitButton = screen.getByTestId('submissionButton');
- await act(async () => {
- fireEvent.click(submitButton);
- });
+ fireEvent.click(submitButton);
expect(axiosMock.history.post.length).toBe(1);
- const errorAlert = screen.getByTestId('saveError');
- expect(errorAlert.textContent).toEqual(
- expect.stringContaining('We encountered a technical error while trying to save proctored exam settings'),
- );
- expect(document.activeElement).toEqual(errorAlert);
+ await waitFor(() => {
+ const errorAlert = screen.getByTestId('saveError');
+ expect(errorAlert.textContent).toEqual(
+ expect.stringContaining('We encountered a technical error while trying to save proctored exam settings'),
+ );
+ expect(document.activeElement).toEqual(errorAlert);
+ });
// now make a call that will allow for a successful save
axiosMock.onPost(
StudioApiService.getProctoredExamSettingsUrl(defaultProps.courseId),
).reply(200, 'success');
- await act(async () => {
- fireEvent.click(submitButton);
- });
+ fireEvent.click(submitButton);
expect(axiosMock.history.post.length).toBe(2);
- const successAlert = screen.getByTestId('saveSuccess');
- expect(successAlert.textContent).toEqual(
- expect.stringContaining('Proctored exam settings saved successfully.'),
- );
- expect(document.activeElement).toEqual(successAlert);
+ await waitFor(() => {
+ const successAlert = screen.getByTestId('saveSuccess');
+ expect(successAlert.textContent).toEqual(
+ expect.stringContaining('Proctored exam settings saved successfully.'),
+ );
+ expect(document.activeElement).toEqual(successAlert);
+ });
});
it('Include Zendesk ticket in post request if user is not an admin', async () => {
@@ -891,13 +839,9 @@ describe('ProctoredExamSettings', () => {
await act(async () => render(intlWrapper()));
// Make a change to the proctoring provider
const selectElement = screen.getByDisplayValue('mockproc');
- await act(async () => {
- fireEvent.change(selectElement, { target: { value: 'proctortrack' } });
- });
+ fireEvent.change(selectElement, { target: { value: 'proctortrack' } });
const submitButton = screen.getByTestId('submissionButton');
- await act(async () => {
- fireEvent.click(submitButton);
- });
+ fireEvent.click(submitButton);
expect(axiosMock.history.post.length).toBe(1);
expect(JSON.parse(axiosMock.history.post[0].data)).toEqual({
proctored_exam_settings: {
diff --git a/src/accessibility-page/messages.js b/src/accessibility-page/messages.js
index 6b97fb96e9..b15a88832c 100644
--- a/src/accessibility-page/messages.js
+++ b/src/accessibility-page/messages.js
@@ -2,7 +2,7 @@ import { defineMessages } from '@edx/frontend-platform/i18n';
const messages = defineMessages({
pageTitle: {
- id: 'course-authoring.import.page.title',
+ id: 'course-authoring.accessibility.page.title',
defaultMessage: 'Studio Accessibility Policy| {siteName}',
},
});
diff --git a/src/certificates/layout/header-buttons/HeaderButtons.test.jsx b/src/certificates/layout/header-buttons/HeaderButtons.test.jsx
index e774774d76..7adf1072d1 100644
--- a/src/certificates/layout/header-buttons/HeaderButtons.test.jsx
+++ b/src/certificates/layout/header-buttons/HeaderButtons.test.jsx
@@ -59,10 +59,10 @@ describe('HeaderButtons Component', () => {
expect(previewLink).toHaveAttribute('href', expect.stringContaining(certificatesDataMock.courseModes[0]));
const dropdownButton = getByRole('button', { name: certificatesDataMock.courseModes[0] });
- await userEvent.click(dropdownButton);
+ userEvent.click(dropdownButton);
const verifiedMode = await getByRole('button', { name: certificatesDataMock.courseModes[1] });
- await userEvent.click(verifiedMode);
+ userEvent.click(verifiedMode);
await waitFor(() => {
expect(previewLink).toHaveAttribute('href', expect.stringContaining(certificatesDataMock.courseModes[1]));
@@ -78,7 +78,7 @@ describe('HeaderButtons Component', () => {
const { getByRole, queryByRole } = renderComponent();
const activationButton = getByRole('button', { name: messages.headingActionsActivate.defaultMessage });
- await userEvent.click(activationButton);
+ userEvent.click(activationButton);
axiosMock.onPost(
getUpdateCertificateApiUrl(courseId, certificatesDataMock.certificates[0].id),
@@ -110,7 +110,7 @@ describe('HeaderButtons Component', () => {
const { getByRole, queryByRole } = renderComponent();
const deactivateButton = getByRole('button', { name: messages.headingActionsDeactivate.defaultMessage });
- await userEvent.click(deactivateButton);
+ userEvent.click(deactivateButton);
axiosMock.onPost(
getUpdateCertificateApiUrl(courseId, certificatesDataMock.certificates[0].id),
diff --git a/src/content-tags-drawer/messages.js b/src/content-tags-drawer/messages.js
index 4b69010e58..d461d32230 100644
--- a/src/content-tags-drawer/messages.js
+++ b/src/content-tags-drawer/messages.js
@@ -69,7 +69,7 @@ const messages = defineMessages({
defaultMessage: 'Add a tag',
},
collapsibleNoTagsAddedText: {
- id: 'course-authoring.content-tags-drawer.content-tags-collapsible.custom-menu.placeholder-text',
+ id: 'course-authoring.content-tags-drawer.content-tags-collapsible.custom-menu.no-tags-added-text',
defaultMessage: 'No tags added yet.',
},
collapsibleAddStagedTagsButtonText: {
diff --git a/src/course-checklist/ChecklistSection/ChecklistItemComment.jsx b/src/course-checklist/ChecklistSection/ChecklistItemComment.jsx
index b254a79c16..92fb83ea32 100644
--- a/src/course-checklist/ChecklistSection/ChecklistItemComment.jsx
+++ b/src/course-checklist/ChecklistSection/ChecklistItemComment.jsx
@@ -79,10 +79,9 @@ const ChecklistItemComment = ({
{gradedAssignmentsOutsideDateRange.map(assignment => (
-
-
+
+ {assignment.displayName}
+
))}
diff --git a/src/course-outline/card-header/messages.js b/src/course-outline/card-header/messages.js
index 410443d695..0aeb34b20e 100644
--- a/src/course-outline/card-header/messages.js
+++ b/src/course-outline/card-header/messages.js
@@ -58,7 +58,7 @@ const messages = defineMessages({
defaultMessage: 'Delete',
},
menuCopy: {
- id: 'course-authoring.course-outline.card.menu.delete',
+ id: 'course-authoring.course-outline.card.menu.copy',
defaultMessage: 'Copy to clipboard',
},
menuProctoringLinkText: {
diff --git a/src/course-outline/data/thunk.js b/src/course-outline/data/thunk.js
index 3508fde0bf..315c5846c0 100644
--- a/src/course-outline/data/thunk.js
+++ b/src/course-outline/data/thunk.js
@@ -57,7 +57,10 @@ import {
const getErrorDetails = (error, dismissible = true) => {
const errorInfo = { dismissible };
if (error.response?.data) {
- errorInfo.data = JSON.stringify(error.response.data);
+ const { data } = error.response;
+ if ((typeof data === 'string' && !data.includes('