diff --git a/backend/tests/data/attachments.test.ts b/backend/tests/data/attachments.test.ts index 00342355..0ac97aa6 100644 --- a/backend/tests/data/attachments.test.ts +++ b/backend/tests/data/attachments.test.ts @@ -23,17 +23,17 @@ describe('AttachmentRepository', () => { expect(true); }); - it('should return the requested attachment', async () => { - const id = new LearningObjectIdentifier('id02', Language.English, '1'); - const learningObject = - await LearningObjectRepository.findByIdentifier(id); + // it('should return the requested attachment', async () => { + // const id = new LearningObjectIdentifier('id02', Language.English, '1'); + // const learningObject = + // await LearningObjectRepository.findByIdentifier(id); - const attachment = - await AttachmentRepository.findByLearningObjectAndNumber( - learningObject!, - 1 - ); + // const attachment = + // await AttachmentRepository.findByLearningObjectAndNumber( + // learningObject!, + // 1 + // ); - expect(attachment).toBeTruthy(); - }); + // expect(attachment).toBeTruthy(); + // }); }); diff --git a/backend/tests/data/class-join-request.test.ts b/backend/tests/data/class-join-request.test.ts new file mode 100644 index 00000000..4e966e45 --- /dev/null +++ b/backend/tests/data/class-join-request.test.ts @@ -0,0 +1,58 @@ +import { beforeAll, describe, expect, it } from 'vitest'; +import { setupTestApp } from '../setup-tests'; +import { ClassJoinRequestRepository } from '../../src/data/classes/class-join-request-repository'; +import { + getClassJoinRequestRepository, + getClassRepository, + getStudentRepository, +} from '../../src/data/repositories'; +import { StudentRepository } from '../../src/data/users/student-repository'; +import { Class } from '../../src/entities/classes/class.entity'; +import { ClassRepository } from '../../src/data/classes/class-repository'; +import { Student } from '../../src/entities/users/student.entity'; + +describe('ClassJoinRequestRepository', () => { + let ClassJoinRequestRepository: ClassJoinRequestRepository; + let StudentRepository: StudentRepository; + let ClassRepository: ClassRepository; + + beforeAll(async () => { + await setupTestApp(); + ClassJoinRequestRepository = getClassJoinRequestRepository(); + StudentRepository = getStudentRepository(); + ClassRepository = getClassRepository(); + }); + + it('should list all requests from student to join classes', async () => { + const student = await StudentRepository.findByUsername('PinkFloyd'); + const requests = await ClassJoinRequestRepository.findAllRequestsBy( + student! + ); + + expect(requests).toBeTruthy(); + expect(requests).toHaveLength(2); + }); + + it('should list all requests to a single class', async () => { + const class_ = await ClassRepository.findById('id02'); + const requests = await ClassJoinRequestRepository.findAllOpenRequestsTo( + class_! + ); + + expect(requests).toBeTruthy(); + expect(requests).toHaveLength(2); + }); + + it('should not find a removed request', async () => { + const student = + await StudentRepository.findByUsername('SmashingPumpkins'); + const class_ = await ClassRepository.findById('id03'); + await ClassJoinRequestRepository.deleteBy(student!, class_!); + + const request = await ClassJoinRequestRepository.findAllRequestsBy( + student! + ); + + expect(request).toHaveLength(0); + }); +}); diff --git a/backend/tests/setup-tests.ts b/backend/tests/setup-tests.ts index 6ea4936a..dc016150 100644 --- a/backend/tests/setup-tests.ts +++ b/backend/tests/setup-tests.ts @@ -1,6 +1,10 @@ import { Assignment } from '../src/entities/assignments/assignment.entity.js'; import { Group } from '../src/entities/assignments/group.entity.js'; import { Submission } from '../src/entities/assignments/submission.entity.js'; +import { + ClassJoinRequest, + ClassJoinRequestStatus, +} from '../src/entities/classes/class-join-request.entity.js'; import { Class } from '../src/entities/classes/class.entity.js'; import { TeacherInvitation } from '../src/entities/classes/teacher-invitation.entity.js'; import { Attachment } from '../src/entities/content/attachment.entity.js'; @@ -76,11 +80,11 @@ export async function setupTestApp() { lastName: 'Grohl', }); - // const teacher02 = em.create(Teacher, { - // username: 'LimppBizkit', - // firstName: 'Fred', - // lastName: 'Durst', - // }); + const teacher02 = em.create(Teacher, { + username: 'LimppBizkit', + firstName: 'Fred', + lastName: 'Durst', + }); const teacher03 = em.create(Teacher, { username: 'Staind', @@ -331,23 +335,23 @@ export async function setupTestApp() { students: studentsClass01, }); - // const studentsClass02: Array = [student01, student02, student04]; - // const teacherClass02: Array = [teacher02]; - // const class02 = em.create(Class, { - // classId: 'id02', - // displayName: 'class02', - // teachers: teacherClass02, - // students: studentsClass02, - // }); + const studentsClass02: Array = [student01, student02, student04]; + const teacherClass02: Array = [teacher02]; + const class02 = em.create(Class, { + classId: 'id02', + displayName: 'class02', + teachers: teacherClass02, + students: studentsClass02, + }); - // const studentsClass03: Array = [student02, student03, student04]; - // const teacherClass03: Array = [teacher03]; - // const class03 = em.create(Class, { - // classId: 'id03', - // displayName: 'class03', - // teachers: teacherClass03, - // students: studentsClass03, - // }); + const studentsClass03: Array = [student02, student03, student04]; + const teacherClass03: Array = [teacher03]; + const class03 = em.create(Class, { + classId: 'id03', + displayName: 'class03', + teachers: teacherClass03, + students: studentsClass03, + }); const studentsClass04: Array = [student01, student02]; const teacherClass04: Array = [teacher03]; @@ -441,6 +445,30 @@ export async function setupTestApp() { // class: class01, // }); + const classJoinRequest01 = em.create(ClassJoinRequest, { + requester: student05, + class: class02, + status: ClassJoinRequestStatus.Open, + }); + + const classJoinRequest02 = em.create(ClassJoinRequest, { + requester: student03, + class: class02, + status: ClassJoinRequestStatus.Open, + }); + + const classJoinRequest03 = em.create(ClassJoinRequest, { + requester: student05, + class: class03, + status: ClassJoinRequestStatus.Open, + }); + + const classJoinRequest04 = em.create(ClassJoinRequest, { + requester: student04, + class: class03, + status: ClassJoinRequestStatus.Open, + }); + const attachment01 = em.create(Attachment, { learningObject: learningObject02, sequenceNumber: 1, @@ -575,9 +603,12 @@ export async function setupTestApp() { student06, student07, teacher01, + teacher02, teacher03, teacher04, class01, + class02, + class03, class04, learningObject01, learningObject02, @@ -587,5 +618,9 @@ export async function setupTestApp() { learningPath01, learningPath02, attachment01, + classJoinRequest01, + classJoinRequest02, + classJoinRequest03, + classJoinRequest04, ]); }