test(frontend): searchLearningPathsByAdmin

This commit is contained in:
Tibo De Peuter 2025-05-17 18:44:49 +02:00
parent 1639fbdabf
commit 965ba5dd20
Signed by: tdpeuter
GPG key ID: 38297DE43F75FFE2
2 changed files with 30 additions and 1 deletions

View file

@ -14,11 +14,14 @@ import {
testLearningObjectEssayQuestion,
testLearningObjectMultipleChoice,
} from '../../test_assets/content/learning-objects.testdata';
import { testLearningPathWithConditions } from '../../test_assets/content/learning-paths.testdata';
import { testLearningPath02, testLearningPathWithConditions } from '../../test_assets/content/learning-paths.testdata';
import { mapToLearningPath } from '../../../src/services/learning-paths/learning-path-service';
import { getTestGroup01, getTestGroup02 } from '../../test_assets/assignments/groups.testdata';
import { Group } from '../../../src/entities/assignments/group.entity.js';
import { Teacher } from '../../../src/entities/users/teacher.entity.js';
import { RequiredEntityData } from '@mikro-orm/core';
import { getFooFighters, getLimpBizkit } from '../../test_assets/users/teachers.testdata';
import { mapToTeacherDTO } from '../../../src/interfaces/teacher';
function expectBranchingObjectNode(result: LearningPathResponse): LearningObjectNode {
const branchingObjectMatches = result.data![0].nodes.filter((it) => it.learningobject_hruid === testLearningObjectMultipleChoice.hruid);
@ -33,6 +36,8 @@ describe('DatabaseLearningPathProvider', () => {
let finalLearningObject: RequiredEntityData<LearningObject>;
let groupA: Group;
let groupB: Group;
let teacherA: Teacher;
let teacherB: Teacher;
beforeAll(async () => {
await setupTestApp();
@ -42,6 +47,8 @@ describe('DatabaseLearningPathProvider', () => {
finalLearningObject = testLearningObjectEssayQuestion;
groupA = getTestGroup01();
groupB = getTestGroup02();
teacherA = getFooFighters();
teacherB = getLimpBizkit();
// Place different submissions for group A and B.
const submissionRepo = getSubmissionRepository();
@ -140,4 +147,24 @@ describe('DatabaseLearningPathProvider', () => {
expect(result.length).toBe(0);
});
});
describe('searchLearningPathsByAdmin', () => {
it('returns the learning path owned by the admin', async () => {
const expectedLearningPath = mapToLearningPath(testLearningPath02, [mapToTeacherDTO(teacherB)]);
const result = await databaseLearningPathProvider.searchLearningPathsByAdmin(
[teacherB],
expectedLearningPath.language
);
expect(result.length).toBe(1);
expect(result[0].title).toBe(expectedLearningPath.title);
expect(result[0].description).toBe(expectedLearningPath.description);
});
it('returns an empty result when querying admins that do not have custom learning paths', async() => {
const result = await databaseLearningPathProvider.searchLearningPathsByAdmin(
[teacherA],
testLearningPath.language
);
expect(result.length).toBe(0);
});
});
});

View file

@ -14,10 +14,12 @@ import {
testLearningObjectMultipleChoice,
testLearningObjectPnNotebooks,
} from './learning-objects.testdata';
import { getLimpBizkit } from '../users/teachers.testdata';
export function makeTestLearningPaths(_em: EntityManager): LearningPath[] {
const learningPath01 = mapToLearningPath(testLearningPath01, []);
const learningPath02 = mapToLearningPath(testLearningPath02, []);
learningPath02.admins = [getLimpBizkit()];
const partiallyDatabasePartiallyDwengoApiLearningPath = mapToLearningPath(testPartiallyDatabaseAndPartiallyDwengoApiLearningPath, []);
const learningPathWithConditions = mapToLearningPath(testLearningPathWithConditions, []);