46 lines
1.7 KiB
TypeScript
46 lines
1.7 KiB
TypeScript
import { describe, it, expect, beforeAll } from 'vitest';
|
|
import { TeacherRepository } from '../../../src/data/users/teacher-repository';
|
|
import { setupTestApp } from '../../setup-tests';
|
|
import { getTeacherRepository } from '../../../src/data/repositories';
|
|
|
|
const username = 'testteacher';
|
|
const firstName = 'John';
|
|
const lastName = 'Doe';
|
|
describe('TeacherRepository', () => {
|
|
let teacherRepository: TeacherRepository;
|
|
|
|
beforeAll(async () => {
|
|
await setupTestApp();
|
|
teacherRepository = getTeacherRepository();
|
|
});
|
|
|
|
it('should not return a teacher because username does not exist', async () => {
|
|
const teacher = await teacherRepository.findByUsername('test');
|
|
|
|
expect(teacher).toBeNull();
|
|
});
|
|
|
|
it('should return teacher from the datbase', async () => {
|
|
const teacher = await teacherRepository.findByUsername('FooFighters');
|
|
|
|
expect(teacher).toBeTruthy();
|
|
expect(teacher?.firstName).toBe('Dave');
|
|
expect(teacher?.lastName).toBe('Grohl');
|
|
});
|
|
|
|
it('should return the queried teacher after he was added', async () => {
|
|
await teacherRepository.insert(teacherRepository.create({ username, firstName, lastName }));
|
|
|
|
const retrievedTeacher = await teacherRepository.findByUsername(username);
|
|
expect(retrievedTeacher).toBeTruthy();
|
|
expect(retrievedTeacher?.firstName).toBe(firstName);
|
|
expect(retrievedTeacher?.lastName).toBe(lastName);
|
|
});
|
|
|
|
it('should no longer return the queried teacher after he was removed again', async () => {
|
|
await teacherRepository.deleteByUsername('ZesdeMetaal');
|
|
|
|
const retrievedTeacher = await teacherRepository.findByUsername('ZesdeMetaal');
|
|
expect(retrievedTeacher).toBeNull();
|
|
});
|
|
});
|