From 164a547dd1031ebb4959d76ec80d7c82367f7714 Mon Sep 17 00:00:00 2001 From: Gerald Schmittinger Date: Tue, 11 Mar 2025 00:54:06 +0100 Subject: [PATCH] test(backend): Testdata voor voorwaardelijke overgangen toegevoegd --- .../learning-path-personalizing-service.ts | 5 ++ .../dummy/dummy-learning-object-example.ts | 25 +++++++ .../learning-objects/dummy/rendering.html | 0 .../learning-paths/test-conditions-example.ts | 74 +++++++++++++++++++ 4 files changed, 104 insertions(+) create mode 100644 backend/src/services/learning-paths/learning-path-personalizing-service.ts create mode 100644 backend/tests/test-assets/learning-objects/dummy/dummy-learning-object-example.ts create mode 100644 backend/tests/test-assets/learning-objects/dummy/rendering.html create mode 100644 backend/tests/test-assets/learning-paths/test-conditions-example.ts diff --git a/backend/src/services/learning-paths/learning-path-personalizing-service.ts b/backend/src/services/learning-paths/learning-path-personalizing-service.ts new file mode 100644 index 00000000..2341cc60 --- /dev/null +++ b/backend/src/services/learning-paths/learning-path-personalizing-service.ts @@ -0,0 +1,5 @@ +const learningPathPersonalizingService = { + +}; + +export default learningPathPersonalizingService; diff --git a/backend/tests/test-assets/learning-objects/dummy/dummy-learning-object-example.ts b/backend/tests/test-assets/learning-objects/dummy/dummy-learning-object-example.ts new file mode 100644 index 00000000..cb0f3d45 --- /dev/null +++ b/backend/tests/test-assets/learning-objects/dummy/dummy-learning-object-example.ts @@ -0,0 +1,25 @@ +import {LearningObjectExample} from "../learning-object-example"; +import {LearningObject} from "../../../../src/entities/content/learning-object.entity"; +import {Language} from "../../../../src/entities/content/language"; +import {loadTestAsset} from "../../../test-utils/load-test-asset"; + +/** + * Create a dummy learning object to be used in tests where multiple learning objects are needed (for example for use + * on a path), but where the precise contents of the learning object are not important. + */ +export function dummyLearningObject(hruid: string, language: Language, title: string): LearningObjectExample { + return { + createLearningObject: () => { + const learningObject = new LearningObject(); + learningObject.hruid = hruid; + learningObject.language = language; + learningObject.version = 1; + learningObject.title = title; + learningObject.description = "Just a dummy learning object for testing purposes"; + learningObject.content = Buffer.from("Dummy content"); + return learningObject; + }, + createAttachment: {}, + getHTMLRendering: () => loadTestAsset("learning-objects/dummy/rendering.html").toString() + } +} diff --git a/backend/tests/test-assets/learning-objects/dummy/rendering.html b/backend/tests/test-assets/learning-objects/dummy/rendering.html new file mode 100644 index 00000000..e69de29b diff --git a/backend/tests/test-assets/learning-paths/test-conditions-example.ts b/backend/tests/test-assets/learning-paths/test-conditions-example.ts new file mode 100644 index 00000000..000bb732 --- /dev/null +++ b/backend/tests/test-assets/learning-paths/test-conditions-example.ts @@ -0,0 +1,74 @@ +import {LearningPath} from "../../../src/entities/content/learning-path.entity"; +import {Language} from "../../../src/entities/content/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"; + +const example: LearningPathExample = { + createLearningPath: () => { + const learningPath = new LearningPath(); + learningPath.hruid = "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 learningPath; + } +};