diff --git a/backend/tests/data/teacher-invitation.test.ts b/backend/tests/data/teacher-invitation.test.ts new file mode 100644 index 00000000..e075ee46 --- /dev/null +++ b/backend/tests/data/teacher-invitation.test.ts @@ -0,0 +1,64 @@ +import { beforeAll, describe, expect, it } from 'vitest'; +import { setupTestApp } from '../setup-tests'; +import { + getClassRepository, + getTeacherInvitationRepository, + getTeacherRepository, +} from '../../src/data/repositories'; +import { TeacherInvitationRepository } from '../../src/data/classes/teacher-invitation-repository'; +import { TeacherRepository } from '../../src/data/users/teacher-repository'; +import { ClassRepository } from '../../src/data/classes/class-repository'; + +describe('ClassRepository', () => { + let TeacherInvitationRepository: TeacherInvitationRepository; + let TeacherRepository: TeacherRepository; + let ClassRepository: ClassRepository; + + beforeAll(async () => { + await setupTestApp(); + TeacherInvitationRepository = getTeacherInvitationRepository(); + TeacherRepository = getTeacherRepository(); + ClassRepository = getClassRepository(); + }); + + it('should return all invitations from a teacher', async () => { + const teacher = await TeacherRepository.findByUsername('LimpBizkit'); + const invitations = + await TeacherInvitationRepository.findAllInvitationsBy(teacher!); + + expect(invitations).toBeTruthy(); + expect(invitations).toHaveLength(2); + }); + + it('should return all invitations for a teacher', async () => { + const teacher = await TeacherRepository.findByUsername('FooFighters'); + const invitations = + await TeacherInvitationRepository.findAllInvitationsFor(teacher!); + + expect(invitations).toBeTruthy(); + expect(invitations).toHaveLength(2); + }); + + it('should return all invitations for a class', async () => { + const class_ = await ClassRepository.findById('id02'); + const invitations = + await TeacherInvitationRepository.findAllInvitationsForClass( + class_! + ); + + expect(invitations).toBeTruthy(); + expect(invitations).toHaveLength(2); + }); + + it('should not find a removed invitation', async () => { + const class_ = await ClassRepository.findById('id01'); + const sender = await TeacherRepository.findByUsername('FooFighters'); + const receiver = await TeacherRepository.findByUsername('LimpBizkit'); + await TeacherInvitationRepository.deleteBy(class_!, sender!, receiver!); + + const invitation = + await TeacherInvitationRepository.findAllInvitationsBy(sender!); + + expect(invitation).toHaveLength(0); + }); +}); diff --git a/backend/tests/setup-tests.ts b/backend/tests/setup-tests.ts index dc016150..c9d31786 100644 --- a/backend/tests/setup-tests.ts +++ b/backend/tests/setup-tests.ts @@ -81,7 +81,7 @@ export async function setupTestApp() { }); const teacher02 = em.create(Teacher, { - username: 'LimppBizkit', + username: 'LimpBizkit', firstName: 'Fred', lastName: 'Durst', }); @@ -421,29 +421,29 @@ export async function setupTestApp() { // assignment01.groups.push(group03); // assignment02.groups.push(group04); - // const teacher_invitation01 = em.create(TeacherInvitation, { - // sender: teacher02, - // receiver: teacher01, - // class: class02, - // }); + const teacherInvitation01 = em.create(TeacherInvitation, { + sender: teacher02, + receiver: teacher01, + class: class02, + }); - // const teacher_invitation02 = em.create(TeacherInvitation, { - // sender: teacher02, - // receiver: teacher03, - // class: class02, - // }); + const teacherInvitation02 = em.create(TeacherInvitation, { + sender: teacher02, + receiver: teacher03, + class: class02, + }); - // const teacher_invitation03 = em.create(TeacherInvitation, { - // sender: teacher03, - // receiver: teacher01, - // class: class03, - // }); + const teacherInvitation03 = em.create(TeacherInvitation, { + sender: teacher03, + receiver: teacher01, + class: class03, + }); - // const teacher_invitation04 = em.create(TeacherInvitation, { - // sender: teacher01, - // receiver: teacher02, - // class: class01, - // }); + const teacherInvitation04 = em.create(TeacherInvitation, { + sender: teacher01, + receiver: teacher02, + class: class01, + }); const classJoinRequest01 = em.create(ClassJoinRequest, { requester: student05, @@ -622,5 +622,9 @@ export async function setupTestApp() { classJoinRequest02, classJoinRequest03, classJoinRequest04, + teacherInvitation01, + teacherInvitation02, + teacherInvitation03, + teacherInvitation04, ]); }