diff --git a/src/i18n/en/tests.json b/src/i18n/en/tests.json index 69ceef9..49865f5 100644 --- a/src/i18n/en/tests.json +++ b/src/i18n/en/tests.json @@ -14,7 +14,9 @@ "hasOrphanQuestions": "Test has some orphan questions.", "hasCycle": "Test has cycle.", "notEndingFlow": "Test include some flows which never end.", - "notActiveTest": "Test is not active." + "notActiveTest": "Test is not active.", + "multiChoiceMustHaveFallback": "Multi choice must have fallback.", + "questionHasMultipleFallbacks": "Question has multiple fallbacks." }, "messages": { "createSuccess": "Test Created Successfully." diff --git a/src/i18n/fa/tests.json b/src/i18n/fa/tests.json index 5e10b47..a6776c6 100644 --- a/src/i18n/fa/tests.json +++ b/src/i18n/fa/tests.json @@ -14,7 +14,9 @@ "hasOrphanQuestions": "تست شامل تعدادی سوال یتیم است.", "hasCycle": "تست شامل حلقه است.", "notEndingFlow": "تست شامل جریان بی پایان است.", - "notActiveTest": "تست مورد نظر فعال نیست." + "notActiveTest": "تست مورد نظر فعال نیست.", + "multiChoiceMustHaveFallback": "سوال چند انتخابی باید یک مسیر جایگزین داشته باشد.", + "questionHasMultipleFallbacks": "سوال چند جایگزین دارد!" }, "messages": { "createSuccess": "تست با موفقیت ایجاد شد." diff --git a/src/modules/tests/providers/publish-test-validator.provider.ts b/src/modules/tests/providers/publish-test-validator.provider.ts index fe88533..e45844c 100644 --- a/src/modules/tests/providers/publish-test-validator.provider.ts +++ b/src/modules/tests/providers/publish-test-validator.provider.ts @@ -7,6 +7,7 @@ import { QuestionTransitionType } from '@/modules/questions/enums/question-trans import { AppTimeoutException } from '@/common/exceptions/app-timeout.exception'; import { QuestionTransition } from '@/modules/questions/entities/question-transition.entity'; import { Question } from '@/modules/questions/entities/question.entity'; +import { MultiChoiceTransitionValidator } from '../validators/multi-choice-transition.validator'; @Injectable() export class PublishTestValidatorProvider { @@ -61,6 +62,8 @@ export class PublishTestValidatorProvider { const startQuestionId = startTransitions[0].toQuestion!.id; + MultiChoiceTransitionValidator.validate(test.questions, transitions); + const transitionsGraph = new Map(); this.createTransitionsGraph(transitions, transitionsGraph); diff --git a/src/modules/tests/validators/multi-choice-transition.validator.ts b/src/modules/tests/validators/multi-choice-transition.validator.ts index a062976..9c48931 100644 --- a/src/modules/tests/validators/multi-choice-transition.validator.ts +++ b/src/modules/tests/validators/multi-choice-transition.validator.ts @@ -8,7 +8,7 @@ import { MultiChoiceCondition } from '@/modules/questions/interfaces/multi-choic import { HttpStatus } from '@nestjs/common'; export class MultiChoiceTransitionValidator { - public static validateMultiChoiceTransitions( + public static validate( questions: Question[], transitions: QuestionTransition[], ) { @@ -29,7 +29,6 @@ export class MultiChoiceTransitionValidator { continue; } - // اگر transition شرطی داریم، باید fallback داشته باشیم. const hasDefault = outgoing.some( (t) => t.type === QuestionTransitionType.DEFAULT, );