From 6338ad249a1e6ed7bcbea5845482eb4f8ae19a34 Mon Sep 17 00:00:00 2001 From: Laure Jablonski Date: Sat, 8 Mar 2025 10:35:18 +0100 Subject: [PATCH] test: learning object repository is getest --- backend/tests/data/learning-objects.test.ts | 32 ++++++++++++ backend/tests/setup-tests.ts | 56 +++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 backend/tests/data/learning-objects.test.ts diff --git a/backend/tests/data/learning-objects.test.ts b/backend/tests/data/learning-objects.test.ts new file mode 100644 index 00000000..b2a43398 --- /dev/null +++ b/backend/tests/data/learning-objects.test.ts @@ -0,0 +1,32 @@ +import { beforeAll, describe, expect, it } from "vitest"; +import { LearningObjectRepository } from "../../src/data/content/learning-object-repository"; +import { getLearningObjectRepository } from "../../src/data/repositories"; +import { setupTestApp } from "../setup-tests"; +import { LearningObjectIdentifier } from "../../src/entities/content/learning-object-identifier"; +import { Language } from "../../src/entities/content/language"; + +describe('LearningObjectRepository', () => { + let LearningObjectRepository: LearningObjectRepository; + + beforeAll(async () => { + await setupTestApp(); + LearningObjectRepository = getLearningObjectRepository(); + }); + + const id01 = new LearningObjectIdentifier('hruid_object01', Language.English, '1'); + const id02 = new LearningObjectIdentifier('hruid_object06', Language.English, '1'); + + it('should return the learning object that matches identifier 1', async() => { + const learningObject = await LearningObjectRepository.findByIdentifier(id01); + + expect(learningObject).toBeTruthy(); + expect(learningObject?.title).toBe('Undertow'); + expect(learningObject?.description).toBe('debute'); + }); + + it('should return nothing because the identifier does not exist in the database', async() => { + const learningObject = await LearningObjectRepository.findByIdentifier(id02); + + expect(learningObject).toBeNull(); + }); +}); diff --git a/backend/tests/setup-tests.ts b/backend/tests/setup-tests.ts index 086748eb..2a284634 100644 --- a/backend/tests/setup-tests.ts +++ b/backend/tests/setup-tests.ts @@ -1,3 +1,5 @@ +import { Language } from '../src/entities/content/language.js'; +import { ContentType, LearningObject, ReturnValue } from '../src/entities/content/learning-object.entity.js'; import { Student } from '../src/entities/users/student.entity.js'; import { Teacher } from '../src/entities/users/teacher.entity.js'; import { forkEntityManager, initORM } from '../src/orm.js'; @@ -20,4 +22,58 @@ export async function setupTestApp() { const teacher03 = em.create(Teacher, { username: 'TheDoors', firstName: 'Jim', lastName: 'Morrison'}); await em.persistAndFlush([teacher01, teacher02, teacher03]); + + const admins01 = [teacher01]; + const returnValue = new ReturnValue(); + returnValue.callbackSchema = ''; + returnValue.callbackUrl = ''; + const buffer01 = new Buffer("there's a shadow just behind me, shrouding every step i take, making every promise empty pointing every finger at me"); + const learningObject01 = em.create(LearningObject, { + hruid: 'hruid_object01', + language: Language.English, + version: '1', + admins: admins01, + title: 'Undertow', + description: 'debute', + contentType: ContentType.Markdown, + keywords: [], + teacherExclusive: false, + skosConcepts: [], + educationalGoals: [], + copyright: '', + license: '', + estimatedTime: 45, + returnValue: returnValue, + available: true, + contentLocation: '', + attachments: [], + content: buffer01 + }); + + const admins02 = [teacher02]; + const buffer02 = new Buffer("cause it's always raining in my head, forget all the things I should have had said so I speak to you in riddles, because my words get in my way") + const learningObject02 = em.create(LearningObject, { + hruid: 'hruid_object02', + language: Language.English, + version: '1', + admins: admins02, + title: 'Break the cycle', + description: 'second album', + contentType: ContentType.Markdown, + keywords: ["music"], + teacherExclusive: false, + skosConcepts: [], + educationalGoals: [], + copyright: '', + license: '', + estimatedTime: 55, + returnValue: returnValue, + available: true, + contentLocation: '', + attachments: [], + content: buffer02 + }); + + await em.persistAndFlush([learningObject01, learningObject02]); + }