Skip to content

Commit

Permalink
fix(api): joi validation messages in one batch
Browse files Browse the repository at this point in the history
  • Loading branch information
dianeCdrPix committed Nov 8, 2024
1 parent 9e33402 commit 09966ac
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,22 @@ const qcuElementSchema = Joi.object({
invalid: htmlSchema,
}),
solution: proposalIdSchema.required(),
}).custom((qcuElement, helpers) => {
}).external(async (qcuElement, helpers) => {
const hasGlobalFeedbacks = qcuElement.feedbacks !== undefined;
const hasSpecificFeedbacks = qcuElement.proposals.some((proposal) => proposal.feedback !== undefined);
if (hasGlobalFeedbacks && hasSpecificFeedbacks) {
return helpers.message('Un QCU ne peut pas avoir à la fois des feedbacks spécifiques et globales');
return helpers.error('Un QCU ne peut pas avoir à la fois des feedbacks spécifiques et globales');
}
if (hasSpecificFeedbacks) {
const someProposalsDoNotHaveSpecificFeedback = qcuElement.proposals.some(
(proposal) => proposal.feedback === undefined,
);
if (someProposalsDoNotHaveSpecificFeedback) {
return helpers.message('Dans ce QCU, au moins une proposition ne possède pas de feedback spécifique');
return helpers.error('Dans ce QCU, au moins une proposition ne possède pas de feedback spécifique');
}
}
if (!hasGlobalFeedbacks && !hasSpecificFeedbacks) {
return helpers.message("Dans ce QCU, il n'y a ni feedbacks spécifiques, ni feedbacks globales");
return helpers.error("Dans ce QCU, il n'y a ni feedbacks spécifiques, ni feedbacks globales");
}

return qcuElement;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,22 +84,22 @@ const grainSchema = Joi.object({
],
}),
)
.custom((value, helpers) => {
.external(async (value, helpers) => {
const steppersInArray = value.filter(({ type }) => type === 'stepper');
if (steppersInArray.length > 1) {
return helpers.message("Il ne peut y avoir qu'un stepper par grain");
return helpers.error('Il ne peut y avoir qu\'un stepper par grain');
}
return value;
})
.custom((value, helpers) => {
.external(async (value, helpers) => {
const steppersInArray = value.filter(({ type }) => type === 'stepper');
const elementsInArray = value.filter(({ type }) => type === 'element');
const containsAnswerableElement = elementsInArray.some(({ element }) =>
['qcu', 'qcm', 'qrocm'].includes(element.type),
);
if (steppersInArray.length === 1 && containsAnswerableElement) {
return helpers.message(
"Un grain ne peut pas être composé d'un composant 'stepper' et d'un composant 'element' répondable (QCU, QCM ou QROCM)",
return helpers.error(
'Un grain ne peut pas être composé d\'un composant \'stepper\' et d\'un composant \'element\' répondable (QCU, QCM ou QROCM)',
);
}
return value;
Expand Down

0 comments on commit 09966ac

Please sign in to comment.