2025SELab2-project-Dwengo/backend/tests/data/users/students.test.ts
2025-03-30 12:54:22 +00:00

46 lines
1.7 KiB
TypeScript

import { setupTestApp } from '../../setup-tests.js';
import { describe, it, expect, beforeAll } from 'vitest';
import { StudentRepository } from '../../../src/data/users/student-repository.js';
import { getStudentRepository } from '../../../src/data/repositories.js';
const username = 'teststudent';
const firstName = 'John';
const lastName = 'Doe';
describe('StudentRepository', () => {
let studentRepository: StudentRepository;
beforeAll(async () => {
await setupTestApp();
studentRepository = getStudentRepository();
});
it('should not return a student because username does not exist', async () => {
const student = await studentRepository.findByUsername('test');
expect(student).toBeNull();
});
it('should return student from the datbase', async () => {
const student = await studentRepository.findByUsername('Noordkaap');
expect(student).toBeTruthy();
expect(student?.firstName).toBe('Stijn');
expect(student?.lastName).toBe('Meuris');
});
it('should return the queried student after he was added', async () => {
await studentRepository.insert(studentRepository.create({ username, firstName, lastName }));
const retrievedStudent = await studentRepository.findByUsername(username);
expect(retrievedStudent).toBeTruthy();
expect(retrievedStudent?.firstName).toBe(firstName);
expect(retrievedStudent?.lastName).toBe(lastName);
});
it('should no longer return the queried student after he was removed again', async () => {
await studentRepository.deleteByUsername(username);
const retrievedStudent = await studentRepository.findByUsername(username);
expect(retrievedStudent).toBeNull();
});
});