Skip to content

Commit d94c1e2

Browse files
authored
fix: resolve issue with Xpert unit summary toggle not updating state (#85)
Xpert Unit Summary toggle in Pages & Resources doesn't toggle between enable/disable
1 parent bd0328a commit d94c1e2

2 files changed

Lines changed: 11 additions & 13 deletions

File tree

plugins/course-apps/xpert_unit_summary/Settings.test.jsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -206,31 +206,31 @@ describe('XpertUnitSummarySettings', () => {
206206
});
207207
});
208208

209-
describe('removing course configuration', () => {
209+
describe('disabling course configuration', () => {
210210
beforeEach(() => {
211211
axiosMock.onGet(API.getXpertSettingsUrl(courseId))
212212
.reply(200, generateCourseLevelAPIResponse({
213213
success: true,
214214
enabled: true,
215215
}));
216216

217-
axiosMock.onDelete(API.getXpertSettingsUrl(courseId))
217+
axiosMock.onPost(API.getXpertSettingsUrl(courseId))
218218
.reply(200, generateCourseLevelAPIResponse({
219219
success: true,
220-
enabled: undefined,
220+
enabled: false,
221221
}));
222222

223223
renderComponent();
224224
});
225225

226-
test('Deleting course configuration', async () => {
227-
jest.spyOn(API, 'deleteXpertSettings');
226+
test('Disabling course configuration', async () => {
227+
jest.spyOn(API, 'postXpertSettings');
228228

229229
await waitFor(() => expect(container.querySelector('#enable-xpert_unit_summary-toggle')).toBeTruthy());
230230
fireEvent.click(container.querySelector('#enable-xpert_unit_summary-toggle'));
231231
fireEvent.click(getByText(container, 'Save'));
232232
await waitFor(() => expect(container.querySelector('#enable-xpert_unit_summary-toggle')).toBeTruthy());
233-
expect(API.deleteXpertSettings).toBeCalled();
233+
expect(API.postXpertSettings).toBeCalledWith(courseId, { enabled: false });
234234
});
235235
});
236236

plugins/course-apps/xpert_unit_summary/settings-modal/SettingsModal.jsx

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import { updateSavingStatus, updateResetStatus } from 'CourseAuthoring/pages-and
3636
import AppConfigFormDivider from 'CourseAuthoring/pages-and-resources/discussions/app-config-form/apps/shared/AppConfigFormDivider';
3737
import { PagesAndResourcesContext } from 'CourseAuthoring/pages-and-resources/PagesAndResourcesProvider';
3838

39-
import { updateXpertSettings, resetXpertSettings, removeXpertSettings } from '../data/thunks';
39+
import { updateXpertSettings, resetXpertSettings } from '../data/thunks';
4040
import messages from './messages';
4141
import appInfo from '../appInfo';
4242
import ResetIcon from './ResetIcon';
@@ -235,13 +235,11 @@ const SettingsModal = ({
235235

236236
const handleFormSubmit = async ({ enabled, checked, ...rest }) => {
237237
let success;
238-
const values = { ...rest, enabled: enabled ? checked === 'true' : undefined };
238+
const values = { ...rest, enabled: enabled ? checked === 'true' : false };
239239

240-
if (enabled) {
241-
success = await dispatch(updateXpertSettings(courseId, values));
242-
} else {
243-
success = await dispatch(removeXpertSettings(courseId));
244-
}
240+
// Always update settings to save the enabled state (true/false)
241+
// Don't delete the record when disabling, as that would fall back to system default
242+
success = await dispatch(updateXpertSettings(courseId, values));
245243

246244
if (onSettingsSave) {
247245
success = success && await onSettingsSave(values);

0 commit comments

Comments
 (0)