feat: add multi choice publish test validator
This commit is contained in:
@@ -14,7 +14,9 @@
|
|||||||
"hasOrphanQuestions": "Test has some orphan questions.",
|
"hasOrphanQuestions": "Test has some orphan questions.",
|
||||||
"hasCycle": "Test has cycle.",
|
"hasCycle": "Test has cycle.",
|
||||||
"notEndingFlow": "Test include some flows which never end.",
|
"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": {
|
"messages": {
|
||||||
"createSuccess": "Test Created Successfully."
|
"createSuccess": "Test Created Successfully."
|
||||||
|
|||||||
@@ -14,7 +14,9 @@
|
|||||||
"hasOrphanQuestions": "تست شامل تعدادی سوال یتیم است.",
|
"hasOrphanQuestions": "تست شامل تعدادی سوال یتیم است.",
|
||||||
"hasCycle": "تست شامل حلقه است.",
|
"hasCycle": "تست شامل حلقه است.",
|
||||||
"notEndingFlow": "تست شامل جریان بی پایان است.",
|
"notEndingFlow": "تست شامل جریان بی پایان است.",
|
||||||
"notActiveTest": "تست مورد نظر فعال نیست."
|
"notActiveTest": "تست مورد نظر فعال نیست.",
|
||||||
|
"multiChoiceMustHaveFallback": "سوال چند انتخابی باید یک مسیر جایگزین داشته باشد.",
|
||||||
|
"questionHasMultipleFallbacks": "سوال چند جایگزین دارد!"
|
||||||
},
|
},
|
||||||
"messages": {
|
"messages": {
|
||||||
"createSuccess": "تست با موفقیت ایجاد شد."
|
"createSuccess": "تست با موفقیت ایجاد شد."
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import { QuestionTransitionType } from '@/modules/questions/enums/question-trans
|
|||||||
import { AppTimeoutException } from '@/common/exceptions/app-timeout.exception';
|
import { AppTimeoutException } from '@/common/exceptions/app-timeout.exception';
|
||||||
import { QuestionTransition } from '@/modules/questions/entities/question-transition.entity';
|
import { QuestionTransition } from '@/modules/questions/entities/question-transition.entity';
|
||||||
import { Question } from '@/modules/questions/entities/question.entity';
|
import { Question } from '@/modules/questions/entities/question.entity';
|
||||||
|
import { MultiChoiceTransitionValidator } from '../validators/multi-choice-transition.validator';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class PublishTestValidatorProvider {
|
export class PublishTestValidatorProvider {
|
||||||
@@ -61,6 +62,8 @@ export class PublishTestValidatorProvider {
|
|||||||
|
|
||||||
const startQuestionId = startTransitions[0].toQuestion!.id;
|
const startQuestionId = startTransitions[0].toQuestion!.id;
|
||||||
|
|
||||||
|
MultiChoiceTransitionValidator.validate(test.questions, transitions);
|
||||||
|
|
||||||
const transitionsGraph = new Map<number, QuestionTransition[]>();
|
const transitionsGraph = new Map<number, QuestionTransition[]>();
|
||||||
|
|
||||||
this.createTransitionsGraph(transitions, transitionsGraph);
|
this.createTransitionsGraph(transitions, transitionsGraph);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import { MultiChoiceCondition } from '@/modules/questions/interfaces/multi-choic
|
|||||||
import { HttpStatus } from '@nestjs/common';
|
import { HttpStatus } from '@nestjs/common';
|
||||||
|
|
||||||
export class MultiChoiceTransitionValidator {
|
export class MultiChoiceTransitionValidator {
|
||||||
public static validateMultiChoiceTransitions(
|
public static validate(
|
||||||
questions: Question[],
|
questions: Question[],
|
||||||
transitions: QuestionTransition[],
|
transitions: QuestionTransition[],
|
||||||
) {
|
) {
|
||||||
@@ -29,7 +29,6 @@ export class MultiChoiceTransitionValidator {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// اگر transition شرطی داریم، باید fallback داشته باشیم.
|
|
||||||
const hasDefault = outgoing.some(
|
const hasDefault = outgoing.some(
|
||||||
(t) => t.type === QuestionTransitionType.DEFAULT,
|
(t) => t.type === QuestionTransitionType.DEFAULT,
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user