Coursemology/coursemology2

View on GitHub
client/app/bundles/course/assessment/submission/pages/SubmissionEditIndex/ErrorHelper.tsx

Summary

Maintainability
A
0 mins
Test Coverage
import { Resolver } from 'react-hook-form';
import { QuestionType } from 'types/course/assessment/question';
import { AnswerData } from 'types/course/assessment/submission/answer';
import { SubmissionQuestionData } from 'types/course/assessment/submission/question/types';

import { Attachment } from '../../components/answers/types';

import { validateBasedOnQuestionType } from './validations/AllValidation';

export const errorResolver = (
  questions: SubmissionQuestionData<keyof typeof QuestionType>[],
  questionAttachments: Record<number, Attachment[]>,
): Resolver<Record<number, AnswerData>> => {
  return async (data) => {
    const allErrors = {};
    Object.entries(data).forEach(([answerId, answer]) => {
      const { questionId } = answer;
      const errors = validateBasedOnQuestionType(
        questions[questionId],
        questionAttachments[questionId],
      );

      if (errors.errorTypes.length > 0) {
        allErrors[answerId] = errors;
      }
    });
    return {
      values: data,
      errors: allErrors,
    };
  };
};