Skip to content

Commit 92a35c8

Browse files
committed
implement freeResponse valdation in getters instead
1 parent ecb8846 commit 92a35c8

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

contentcuration/contentcuration/frontend/channelEdit/vuex/assessmentItem/getters.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1+
import { AssessmentItemTypes, ContentModalities, DELAYED_VALIDATION } from 'shared/constants';
12
import { getAssessmentItemErrors } from 'shared/utils/validation';
2-
import { DELAYED_VALIDATION } from 'shared/constants';
3-
43
/**
54
* Get assessment items of a node.
65
*/
@@ -33,18 +32,23 @@ export function getAssessmentItemsErrors(state, getters, rootState, rootGetters)
3332
const assessmentItemsErrors = {};
3433

3534
const contentNode = rootGetters['contentNode/getContentNode'](contentNodeId);
35+
const modality = contentNode?.extra_fields?.options?.modality;
3636

3737
if (!state.assessmentItemsMap || !state.assessmentItemsMap[contentNodeId]) {
3838
return assessmentItemsErrors;
3939
}
4040
Object.keys(state.assessmentItemsMap[contentNodeId]).forEach(assessmentItemId => {
4141
const assessmentItem = state.assessmentItemsMap[contentNodeId][assessmentItemId];
42+
const freeResponseInvalid =
43+
modality !== ContentModalities.SURVEY &&
44+
assessmentItem.type === AssessmentItemTypes.FREE_RESPONSE;
45+
4246
if (ignoreDelayed && assessmentItem[DELAYED_VALIDATION]) {
4347
assessmentItemsErrors[assessmentItemId] = [];
4448
} else {
4549
assessmentItemsErrors[assessmentItemId] = getAssessmentItemErrors(
4650
assessmentItem,
47-
contentNode
51+
freeResponseInvalid
4852
);
4953
}
5054
});

contentcuration/contentcuration/frontend/shared/utils/validation.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -534,9 +534,8 @@ export function sanitizeAssessmentItem(assessmentItem, removeEmpty = false) {
534534
* @param {Object} assessmentItem An assessment item.
535535
* @returns {Array} An array of error codes.
536536
*/
537-
export function getAssessmentItemErrors(assessmentItem, contentNode) {
537+
export function getAssessmentItemErrors(assessmentItem, freeResponseInvalid = false) {
538538
const errors = [];
539-
const modality = contentNode?.extra_fields?.options?.modality;
540539

541540
// Don't validate perseus questions
542541
if (assessmentItem.type === AssessmentItemTypes.PERSEUS_QUESTION) {
@@ -557,10 +556,7 @@ export function getAssessmentItemErrors(assessmentItem, contentNode) {
557556
if (!assessmentItem.question || !assessmentItem.question.trim()) {
558557
errors.push(ValidationErrors.QUESTION_REQUIRED);
559558
}
560-
if (
561-
modality !== ContentModalities.SURVEY &&
562-
assessmentItem.type == AssessmentItemTypes.FREE_RESPONSE
563-
) {
559+
if (freeResponseInvalid) {
564560
errors.push(ValidationErrors.INVALID_COMPLETION_TYPE_FOR_FREE_RESPONSE_QUESTION);
565561
}
566562

0 commit comments

Comments
 (0)