56 lines
2.0 KiB
TypeScript
56 lines
2.0 KiB
TypeScript
import { Test, TestingModule } from '@nestjs/testing';
|
|
import { getRepositoryToken } from '@nestjs/typeorm';
|
|
import { EmailController } from './email.controller';
|
|
import { Email } from '../database/entities/email.entity';
|
|
|
|
const mockEmails: Partial<Email>[] = [
|
|
{ Id: 1, MessageId: 'msg-1', SenderAddress: 'a@test.de', RecipientAddress: 'b@test.de', Subject: 'Test 1', Date: new Date(), Body: 'body', Status: 0 },
|
|
{ Id: 2, MessageId: 'msg-2', SenderAddress: 'c@test.de', RecipientAddress: 'd@test.de', Subject: 'Test 2', Date: new Date(), Body: 'body2', Status: 1 },
|
|
];
|
|
|
|
const mockQueryBuilder = {
|
|
orderBy: jest.fn().mockReturnThis(),
|
|
take: jest.fn().mockReturnThis(),
|
|
where: jest.fn().mockReturnThis(),
|
|
getMany: jest.fn().mockResolvedValue(mockEmails),
|
|
};
|
|
|
|
const mockRepo = {
|
|
createQueryBuilder: jest.fn().mockReturnValue(mockQueryBuilder),
|
|
findOneByOrFail: jest.fn().mockResolvedValue(mockEmails[0]),
|
|
};
|
|
|
|
describe('EmailController', () => {
|
|
let controller: EmailController;
|
|
|
|
beforeEach(async () => {
|
|
const module: TestingModule = await Test.createTestingModule({
|
|
controllers: [EmailController],
|
|
providers: [{ provide: getRepositoryToken(Email), useValue: mockRepo }],
|
|
}).compile();
|
|
|
|
controller = module.get<EmailController>(EmailController);
|
|
});
|
|
|
|
it('should be defined', () => {
|
|
expect(controller).toBeDefined();
|
|
});
|
|
|
|
it('getEmails returns list', async () => {
|
|
const result = await controller.getEmails();
|
|
expect(result).toHaveLength(2);
|
|
expect(mockQueryBuilder.orderBy).toHaveBeenCalledWith('e.Date', 'DESC');
|
|
});
|
|
|
|
it('getEmails filters by status', async () => {
|
|
await controller.getEmails('1');
|
|
expect(mockQueryBuilder.where).toHaveBeenCalledWith('e.Status = :status', { status: 1 });
|
|
});
|
|
|
|
it('getEmail returns single item', async () => {
|
|
const result = await controller.getEmail('1');
|
|
expect(result).toEqual(mockEmails[0]);
|
|
expect(mockRepo.findOneByOrFail).toHaveBeenCalledWith({ Id: 1 });
|
|
});
|
|
});
|