fix: grade data is empty object when there isn't grade data (#48)

* fix: grade data is empty object when there isn't grade data

* test: update unit testing
This commit is contained in:
leangseu-edx
2022-01-21 13:36:54 -05:00
committed by GitHub
parent c5bf0a7d11
commit f7341efc71
3 changed files with 6 additions and 6 deletions

View File

@@ -136,13 +136,13 @@ selected.userDisplay = createSelector(
***********************************/
/**
* Returns the grade data for the selected submission
* Returns the grade data for the selected submission or empty object
* @return {obj} grade data
* { score, overallFeedback, criteria }
*/
selected.gradeData = createSelector(
[module.selected.submissionUUID, module.simpleSelectors.gradeData],
(submissionUUID, gradeData) => gradeData[submissionUUID],
(submissionUUID, gradeData) => gradeData[submissionUUID] || {},
);
/**

View File

@@ -50,7 +50,7 @@ export const loadSubmission = () => (dispatch, getState) => {
if (selectors.grading.selected.isGrading(getState())) {
dispatch(actions.app.setShowRubric(true));
let gradeData = selectors.grading.selected.gradeData(getState());
if (!gradeData) {
if (!Object.keys(gradeData).length) {
gradeData = selectors.app.emptyGrade(getState());
}
const lockStatus = selectors.grading.selected.lockStatus(getState());
@@ -75,7 +75,7 @@ export const startGrading = () => (dispatch, getState) => {
onSuccess: (response) => {
dispatch(actions.app.setShowRubric(true));
let gradeData = selectors.grading.selected.gradeData(getState());
if (!gradeData) {
if (!Object.keys(gradeData).length) {
gradeData = selectors.app.emptyGrade(getState());
}
dispatch(actions.grading.startGrading({ ...response, gradeData }));

View File

@@ -156,8 +156,8 @@ describe('grading thunkActions', () => {
const expected = [
actions.grading.startGrading({ ...startResponse, gradeData: emptyGrade }),
];
selectors.grading.selected.gradeData.mockReturnValue(undefined);
actionArgs.onSuccess({ ...startResponse, gradeData: undefined });
selectors.grading.selected.gradeData.mockReturnValue({});
actionArgs.onSuccess({ ...startResponse, gradeData: {} });
expect(dispatch.mock.calls).toContainEqual(expected);
expect(dispatch.mock.calls).toContainEqual([actions.app.setShowRubric(true)]);
dispatch.mockClear();