From 620a988c6b36ce78581a11ad3cc82b71ca6baa80 Mon Sep 17 00:00:00 2001 From: Gerald Schmittinger Date: Wed, 9 Apr 2025 23:59:27 +0200 Subject: [PATCH] fix(backend): Merge-conflicten opgelost & testen gerepareerd. --- backend/src/controllers/submissions.ts | 10 ++++++++-- backend/src/data/questions/question-repository.ts | 4 +++- backend/src/interfaces/submission.ts | 2 +- backend/src/services/submissions.ts | 2 +- backend/tests/data/assignments/assignments.test.ts | 2 +- backend/tests/data/assignments/submissions.test.ts | 2 +- backend/tests/data/questions/questions.test.ts | 4 ++-- common/src/interfaces/question.ts | 6 ++++++ 8 files changed, 23 insertions(+), 9 deletions(-) diff --git a/backend/src/controllers/submissions.ts b/backend/src/controllers/submissions.ts index 4714c1c4..51faa79b 100644 --- a/backend/src/controllers/submissions.ts +++ b/backend/src/controllers/submissions.ts @@ -15,9 +15,15 @@ import { LearningObjectIdentifier } from '../entities/content/learning-object-id export async function getSubmissionsHandler(req: Request, res: Response): Promise { const loHruid = req.params.hruid; const lang = languageMap[req.query.language as string] || Language.Dutch; - const version = req.query.version || 1; + const version = parseInt(req.query.version as string) ?? 1; - const submissions = await getSubmissionsForLearningObjectAndAssignment(loHruid, lang, version, req.query.classId, req.query.assignmentId); + const submissions = await getSubmissionsForLearningObjectAndAssignment( + loHruid, + lang, + version, + req.query.classId as string, + parseInt(req.query.assignmentId as string) + ); res.json(submissions); } diff --git a/backend/src/data/questions/question-repository.ts b/backend/src/data/questions/question-repository.ts index faaf3528..e14c4f14 100644 --- a/backend/src/data/questions/question-repository.ts +++ b/backend/src/data/questions/question-repository.ts @@ -62,7 +62,9 @@ export class QuestionRepository extends DwengoEntityRepository { public async findAllByAssignment(assignment: Assignment): Promise { return this.find({ - author: assignment.groups.flatMap((group) => group.members), + inGroup: { + $contained: assignment.groups + }, learningObjectHruid: assignment.learningPathHruid, learningObjectLanguage: assignment.learningPathLanguage, }); diff --git a/backend/src/interfaces/submission.ts b/backend/src/interfaces/submission.ts index 085c795d..2aebb0f1 100644 --- a/backend/src/interfaces/submission.ts +++ b/backend/src/interfaces/submission.ts @@ -32,7 +32,7 @@ export function mapToSubmissionDTOId(submission: Submission): SubmissionDTOId { }; } -export function mapToSubmission(submissionDTO: SubmissionDTO, submitter: Student, onBehalfOf: Group | undefined): Submission { +export function mapToSubmission(submissionDTO: SubmissionDTO, submitter: Student, onBehalfOf: Group): Submission { return getSubmissionRepository().create({ learningObjectHruid: submissionDTO.learningObjectIdentifier.hruid, learningObjectLanguage: submissionDTO.learningObjectIdentifier.language, diff --git a/backend/src/services/submissions.ts b/backend/src/services/submissions.ts index 76141c4c..0f225845 100644 --- a/backend/src/services/submissions.ts +++ b/backend/src/services/submissions.ts @@ -33,7 +33,7 @@ export async function getAllSubmissions(loId: LearningObjectIdentifier): Promise export async function createSubmission(submissionDTO: SubmissionDTO): Promise { const submitter = await fetchStudent(submissionDTO.submitter.username); - const group = submissionDTO.group ? await getExistingGroupFromGroupDTO(submissionDTO.group) : undefined; + const group = await getExistingGroupFromGroupDTO(submissionDTO.group!); const submissionRepository = getSubmissionRepository(); const submission = mapToSubmission(submissionDTO, submitter, group); diff --git a/backend/tests/data/assignments/assignments.test.ts b/backend/tests/data/assignments/assignments.test.ts index 206ab4fd..1fe52523 100644 --- a/backend/tests/data/assignments/assignments.test.ts +++ b/backend/tests/data/assignments/assignments.test.ts @@ -32,7 +32,7 @@ describe('AssignmentRepository', () => { }); it('should find all by username of the responsible teacher', async () => { - const result = await assignmentRepository.findAllByResponsibleTeacher('FooFighters'); + const result = await assignmentRepository.findAllByResponsibleTeacher('testleerkracht1'); const resultIds = result.map((it) => it.id).sort((a, b) => (a ?? 0) - (b ?? 0)); expect(resultIds).toEqual([1, 3, 4]); diff --git a/backend/tests/data/assignments/submissions.test.ts b/backend/tests/data/assignments/submissions.test.ts index 47e1c414..31aafc1d 100644 --- a/backend/tests/data/assignments/submissions.test.ts +++ b/backend/tests/data/assignments/submissions.test.ts @@ -66,7 +66,7 @@ describe('SubmissionRepository', () => { let assignment: Assignment | null; let loId: LearningObjectIdentifier; it('should find all submissions for a certain learning object and assignment', async () => { - clazz = await classRepository.findById('id01'); + clazz = await classRepository.findById('8764b861-90a6-42e5-9732-c0d9eb2f55f9'); assignment = await assignmentRepository.findByClassAndId(clazz!, 1); loId = { hruid: 'id02', diff --git a/backend/tests/data/questions/questions.test.ts b/backend/tests/data/questions/questions.test.ts index f24601bb..9565e71d 100644 --- a/backend/tests/data/questions/questions.test.ts +++ b/backend/tests/data/questions/questions.test.ts @@ -37,7 +37,7 @@ describe('QuestionRepository', () => { const id = new LearningObjectIdentifier('id03', Language.English, 1); const student = await studentRepository.findByUsername('Noordkaap'); - const clazz = await getClassRepository().findById('id01'); + const clazz = await getClassRepository().findById('8764b861-90a6-42e5-9732-c0d9eb2f55f9'); const assignment = await getAssignmentRepository().findByClassAndId(clazz!, 1); const group = await getGroupRepository().findByAssignmentAndGroupNumber(assignment!, 1); await questionRepository.createQuestion({ @@ -56,7 +56,7 @@ describe('QuestionRepository', () => { let assignment: Assignment | null; let loId: LearningObjectIdentifier; it('should find all questions for a certain learning object and assignment', async () => { - clazz = await getClassRepository().findById('id01'); + clazz = await getClassRepository().findById('8764b861-90a6-42e5-9732-c0d9eb2f55f9'); assignment = await getAssignmentRepository().findByClassAndId(clazz!, 1); loId = { hruid: 'id05', diff --git a/common/src/interfaces/question.ts b/common/src/interfaces/question.ts index f5eceffd..172d14b7 100644 --- a/common/src/interfaces/question.ts +++ b/common/src/interfaces/question.ts @@ -11,6 +11,12 @@ export interface QuestionDTO { content: string; } +export interface QuestionData { + author?: string; + content: string; + inGroup: GroupDTO; +} + export interface QuestionId { learningObjectIdentifier: LearningObjectIdentifierDTO; sequenceNumber: number;