80 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { LearningPath } from '../../../src/entities/content/learning-path.entity';
 | 
						|
import { Language } from '@dwengo-1/common/util/language';
 | 
						|
import testMultipleChoiceExample from '../learning-objects/test-multiple-choice/test-multiple-choice-example';
 | 
						|
import { dummyLearningObject } from '../learning-objects/dummy/dummy-learning-object-example';
 | 
						|
import { createLearningPathNode, createLearningPathTransition } from './learning-path-utils';
 | 
						|
import { LearningObject } from '../../../src/entities/content/learning-object.entity';
 | 
						|
import { envVars, getEnvVar } from '../../../src/util/envVars';
 | 
						|
 | 
						|
export interface ConditionTestLearningPathAndLearningObjects {
 | 
						|
    branchingObject: LearningObject;
 | 
						|
    extraExerciseObject: LearningObject;
 | 
						|
    finalObject: LearningObject;
 | 
						|
    learningPath: LearningPath;
 | 
						|
}
 | 
						|
 | 
						|
export function createConditionTestLearningPathAndLearningObjects(): ConditionTestLearningPathAndLearningObjects {
 | 
						|
    const learningPath = new LearningPath();
 | 
						|
    learningPath.hruid = `${getEnvVar(envVars.UserContentPrefix)}test_conditions`;
 | 
						|
    learningPath.language = Language.English;
 | 
						|
    learningPath.title = 'Example learning path with conditional transitions';
 | 
						|
    learningPath.description = 'This learning path was made for the purpose of testing conditional transitions';
 | 
						|
 | 
						|
    const branchingLearningObject = testMultipleChoiceExample.createLearningObject();
 | 
						|
    const extraExerciseLearningObject = dummyLearningObject(
 | 
						|
        'test_extra_exercise',
 | 
						|
        Language.English,
 | 
						|
        'Extra exercise (for students with difficulties)'
 | 
						|
    ).createLearningObject();
 | 
						|
    const finalLearningObject = dummyLearningObject(
 | 
						|
        'test_final_learning_object',
 | 
						|
        Language.English,
 | 
						|
        'Final exercise (for everyone)'
 | 
						|
    ).createLearningObject();
 | 
						|
 | 
						|
    const branchingNode = createLearningPathNode(
 | 
						|
        learningPath,
 | 
						|
        0,
 | 
						|
        branchingLearningObject.hruid,
 | 
						|
        branchingLearningObject.version,
 | 
						|
        branchingLearningObject.language,
 | 
						|
        true
 | 
						|
    );
 | 
						|
    const extraExerciseNode = createLearningPathNode(
 | 
						|
        learningPath,
 | 
						|
        1,
 | 
						|
        extraExerciseLearningObject.hruid,
 | 
						|
        extraExerciseLearningObject.version,
 | 
						|
        extraExerciseLearningObject.language,
 | 
						|
        false
 | 
						|
    );
 | 
						|
    const finalNode = createLearningPathNode(
 | 
						|
        learningPath,
 | 
						|
        2,
 | 
						|
        finalLearningObject.hruid,
 | 
						|
        finalLearningObject.version,
 | 
						|
        finalLearningObject.language,
 | 
						|
        false
 | 
						|
    );
 | 
						|
 | 
						|
    const transitionToExtraExercise = createLearningPathTransition(
 | 
						|
        branchingNode,
 | 
						|
        0,
 | 
						|
        '$[?(@[0] == 0)]', // The answer to the first question was the first one, which says that it is difficult for the student to follow along.
 | 
						|
        extraExerciseNode
 | 
						|
    );
 | 
						|
    const directTransitionToFinal = createLearningPathTransition(branchingNode, 1, '$[?(@[0] == 1)]', finalNode);
 | 
						|
    const transitionExtraExerciseToFinal = createLearningPathTransition(extraExerciseNode, 0, 'true', finalNode);
 | 
						|
 | 
						|
    branchingNode.transitions = [transitionToExtraExercise, directTransitionToFinal];
 | 
						|
    extraExerciseNode.transitions = [transitionExtraExerciseToFinal];
 | 
						|
 | 
						|
    learningPath.nodes = [branchingNode, extraExerciseNode, finalNode];
 | 
						|
 | 
						|
    return {
 | 
						|
        branchingObject: branchingLearningObject,
 | 
						|
        finalObject: finalLearningObject,
 | 
						|
        extraExerciseObject: extraExerciseLearningObject,
 | 
						|
        learningPath: learningPath,
 | 
						|
    };
 | 
						|
}
 |