feat: testen voor submissions geimplementeerd

This commit is contained in:
Adriaan Jacquet 2025-03-29 21:56:56 +01:00
parent f0eb4822d9
commit 7a443c0686
3 changed files with 27 additions and 14 deletions

View file

@ -6,12 +6,15 @@ import { Student } from '../../entities/users/student.entity.js';
export class SubmissionRepository extends DwengoEntityRepository<Submission> {
public findSubmissionByLearningObjectAndSubmissionNumber(loId: LearningObjectIdentifier, submissionNumber: number): Promise<Submission | null> {
return this.findOne({
return this.findOne(
{
learningObjectHruid: loId.hruid,
learningObjectLanguage: loId.language,
learningObjectVersion: loId.version,
submissionNumber: submissionNumber,
});
},
{ populate: ['submitter', 'onBehalfOf'] },
);
}
public findSubmissionsByLearningObject(loId: LearningObjectIdentifier): Promise<Submission[]> {

View file

@ -1,9 +1,13 @@
export function checkReturnList(jsonMock: Mock, listName: string) {
export function checkReturnList(jsonMock: Mock, listName: string, length?: number) {
expect(jsonMock).toHaveBeenCalled();
const result = jsonMock.mock.lastCall![0];
expect(listName in result).toBeTruthy();
if (length) {
expect(result[listName].length).toBe(length);
}
}
export function checkReturn404(jsonMock: Mock, statusMock: Mock) {

View file

@ -1,8 +1,10 @@
import { setupTestApp } from '../setup-tests.js';
import { describe, it, expect, beforeAll, beforeEach, vi, Mock } from 'vitest';
import { getSubmissionHandler } from '../../src/controllers/submissions.js';
import { getSubmissionHandler, getAllSubmissionsHandler } from '../../src/controllers/submissions.js';
import { Request, Response } from 'express';
import { checkReturn404, checkReturnList } from './qol.js';
import { getSubmission } from '../../src/services/submissions.js';
import { Language } from '../../src/entities/content/language.js';
function createRequestObject(hruid: string, submissionNumber: string) {
@ -12,7 +14,7 @@ function createRequestObject(hruid: string, submissionNumber: string) {
id: submissionNumber,
},
query: {
language: 'nl',
language: 'en',
version: '1',
},
}
@ -60,13 +62,17 @@ describe('Submission controllers', () => {
await getSubmissionHandler(req as Request, res as Response);
console.log(jsonMock.mock.lastCall![0]);
// TODO
const expectedResult = await getSubmission('id01', Language.English, 1, 1);
expect(jsonMock.mock.lastCall![0]).toStrictEqual(expectedResult);
});
it('should return a list of submissions for a learning object', async () => {
req = createRequestObject('id01', 'irrelevant');
req = createRequestObject('id02', 'irrelevant');
await getAllSubmissionsHandler(req as Request, res as Response);
checkReturnList(jsonMock, 'submissions', 2);
});
});