diff --git a/backend/tests/data/assignments/submissions.test.ts b/backend/tests/data/assignments/submissions.test.ts index ea2341bc..b98f4900 100644 --- a/backend/tests/data/assignments/submissions.test.ts +++ b/backend/tests/data/assignments/submissions.test.ts @@ -10,69 +10,62 @@ import { } from '../../../src/data/repositories'; import { LearningObjectIdentifier } from '../../../src/entities/content/learning-object-identifier'; import { Language } from '@dwengo-1/common/util/language'; -import { StudentRepository } from '../../../src/data/users/student-repository'; -import { GroupRepository } from '../../../src/data/assignments/group-repository'; -import { AssignmentRepository } from '../../../src/data/assignments/assignment-repository'; -import { ClassRepository } from '../../../src/data/classes/class-repository'; import { Submission } from '../../../src/entities/assignments/submission.entity'; import { Class } from '../../../src/entities/classes/class.entity'; import { Assignment } from '../../../src/entities/assignments/assignment.entity'; -import { testLearningObject01 } from '../../test_assets/content/learning-objects.testdata'; +import { testLearningObject01, testLearningObject03 } from '../../test_assets/content/learning-objects.testdata'; +import { getSubmission01, getSubmission02, getSubmission07, getSubmission08 } from '../../test_assets/assignments/submission.testdata'; +import { use } from 'marked'; +import { getAssignment01 } from '../../test_assets/assignments/assignments.testdata'; +import { getTestGroup02 } from '../../test_assets/assignments/groups.testdata'; describe('SubmissionRepository', () => { let submissionRepository: SubmissionRepository; - let studentRepository: StudentRepository; - let groupRepository: GroupRepository; - let assignmentRepository: AssignmentRepository; - let classRepository: ClassRepository; beforeAll(async () => { await setupTestApp(); submissionRepository = getSubmissionRepository(); - studentRepository = getStudentRepository(); - groupRepository = getGroupRepository(); - assignmentRepository = getAssignmentRepository(); - classRepository = getClassRepository(); }); it('should find the requested submission', async () => { - const id = new LearningObjectIdentifier('id03', Language.English, 1); - const submission = await submissionRepository.findSubmissionByLearningObjectAndSubmissionNumber(id, 1); + const usedSubmission = getSubmission01(); + const id = new LearningObjectIdentifier(usedSubmission.learningObjectHruid, usedSubmission.learningObjectLanguage, usedSubmission.learningObjectVersion); + const submission = await submissionRepository.findSubmissionByLearningObjectAndSubmissionNumber(id, usedSubmission.submissionNumber!); expect(submission).toBeTruthy(); - expect(submission?.content).toBe('sub1'); + expect(submission?.content).toBe(usedSubmission.content); + expect(submission?.submissionNumber).toBe(usedSubmission.submissionNumber); + expect(submission?.submitter.username).toBe(usedSubmission.submitter.username); }); it('should find the most recent submission for a student', async () => { - const id = new LearningObjectIdentifier('id02', Language.English, 1); - const student = await studentRepository.findByUsername('Noordkaap'); - const submission = await submissionRepository.findMostRecentSubmissionForStudent(id, student!); + const usedSubmission = getSubmission02(); + const id = new LearningObjectIdentifier(usedSubmission.learningObjectHruid, usedSubmission.learningObjectLanguage, usedSubmission.learningObjectVersion); + + const submission = await submissionRepository.findMostRecentSubmissionForStudent(id, usedSubmission.submitter!); expect(submission).toBeTruthy(); - expect(submission?.submissionTime.getDate()).toBe(25); + expect(submission?.submissionTime).toStrictEqual(usedSubmission.submissionTime); }); it('should find the most recent submission for a group', async () => { - const id = new LearningObjectIdentifier('id03', Language.English, 1); - const class_ = await classRepository.findById('8764b861-90a6-42e5-9732-c0d9eb2f55f9'); - const assignment = await assignmentRepository.findByClassAndId(class_!, 21000); - const group = await groupRepository.findByAssignmentAndGroupNumber(assignment!, 21001); - const submission = await submissionRepository.findMostRecentSubmissionForGroup(id, group!); + const usedSubmission = getSubmission02(); + const id = new LearningObjectIdentifier(usedSubmission.learningObjectHruid, usedSubmission.learningObjectLanguage, usedSubmission.learningObjectVersion); + + const submission = await submissionRepository.findMostRecentSubmissionForGroup(id, usedSubmission.onBehalfOf); expect(submission).toBeTruthy(); - expect(submission?.submissionTime.getDate()).toBe(25); + expect(submission?.submissionTime).toStrictEqual(usedSubmission.submissionTime); }); - let clazz: Class | null; - let assignment: Assignment | null; - let loId: LearningObjectIdentifier; it('should find all submissions for a certain learning object and assignment', async () => { - clazz = await classRepository.findById('8764b861-90a6-42e5-9732-c0d9eb2f55f9'); - assignment = await assignmentRepository.findByClassAndId(clazz!, 21000); - loId = { - hruid: 'id02', - language: Language.English, - version: 1, + const usedSubmission = getSubmission08(); + const assignment = getAssignment01(); + + const loId = { + hruid: usedSubmission.learningObjectHruid, + language: usedSubmission.learningObjectLanguage, + version: usedSubmission.learningObjectVersion, }; const result = await submissionRepository.findAllSubmissionsForLearningObjectAndAssignment(loId, assignment!); sortSubmissions(result); @@ -93,7 +86,14 @@ describe('SubmissionRepository', () => { }); it('should find only the submissions for a certain learning object and assignment made for the given group', async () => { - const group = await groupRepository.findByAssignmentAndGroupNumber(assignment!, 21002); + const group = getTestGroup02(); + const usedSubmission = getSubmission08(); + const loId = { + hruid: usedSubmission.learningObjectHruid, + language: usedSubmission.learningObjectLanguage, + version: usedSubmission.learningObjectVersion, + }; + const result = await submissionRepository.findAllSubmissionsForLearningObjectAndGroup(loId, group!); expect(result).toHaveLength(1); @@ -107,10 +107,11 @@ describe('SubmissionRepository', () => { }); it('should not find a deleted submission', async () => { + const usedSubmission = getSubmission07(); const id = new LearningObjectIdentifier(testLearningObject01.hruid, testLearningObject01.language, testLearningObject01.version); - await submissionRepository.deleteSubmissionByLearningObjectAndSubmissionNumber(id, 1); + await submissionRepository.deleteSubmissionByLearningObjectAndSubmissionNumber(id, usedSubmission.submissionNumber!); - const submission = await submissionRepository.findSubmissionByLearningObjectAndSubmissionNumber(id, 1); + const submission = await submissionRepository.findSubmissionByLearningObjectAndSubmissionNumber(id, usedSubmission.submissionNumber!); expect(submission).toBeNull(); }); diff --git a/backend/tests/test_assets/assignments/submission.testdata.ts b/backend/tests/test_assets/assignments/submission.testdata.ts index 5651b630..96d02c55 100644 --- a/backend/tests/test_assets/assignments/submission.testdata.ts +++ b/backend/tests/test_assets/assignments/submission.testdata.ts @@ -71,6 +71,7 @@ export function makeTestSubmissions(em: EntityManager): Submission[] { content: '', }); + // gets deleted submission07 = em.create(Submission, { learningObjectHruid: testLearningObject01.hruid, learningObjectLanguage: testLearningObject01.language,