Newer
Older
import { getModelToken } from '@nestjs/mongoose';
import { Test } from '@nestjs/testing';
import { appointmentMockData } from '../../test/mock/data/appointment.mock.data';
import { StructuresServiceMock } from '../../test/mock/services/structures.mock.service';
import { UsersServiceMock } from '../../test/mock/services/user.mock.service';
import { MailerModule } from '../mailer/mailer.module';
import { MailerService } from '../mailer/mailer.service';
import { StructuresService } from '../structures/services/structures.service';
import { UsersService } from '../users/services/users.service';
import { AppointmentService } from './appointment.service';
describe('userRegistryService', () => {
let appointmentService: AppointmentService;
const mockAppointmentModel = {
find: jest.fn(() => mockAppointmentModel),
create: jest.fn(() => mockAppointmentModel),
sort: jest.fn(() => mockAppointmentModel),
exec: jest.fn(() => mockAppointmentModel),
deleteMany: jest.fn(() => mockAppointmentModel),
};
const mockMailService = {
send: jest.fn(),
getTemplateLocation: jest.fn(),
loadJsonConfig: jest.fn(),
config: {
templates: {
appointment: {
ejs: 'appointment.ejs',
json: 'appointment.json',
},
},
},
};
const ejsSpy = jest.spyOn(ejs, 'renderFile');
beforeEach(async () => {
const module = await Test.createTestingModule({
imports: [MailerModule, HttpModule],
providers: [
AppointmentService,
{
provide: UsersService,
useClass: UsersServiceMock,
},
{
provide: StructuresService,
useClass: StructuresServiceMock,
},
{ provide: MailerService, useValue: mockMailService },
{
provide: getModelToken('Appointment'),
useValue: mockAppointmentModel,
},
],
}).compile();
appointmentService = module.get<AppointmentService>(AppointmentService);
});
it('should be defined', () => {
});
describe('findAll', () => {
it('should findAll entries', async () => {
mockAppointmentModel.exec.mockResolvedValueOnce(appointmentMockData);
expect(await appointmentService.findAll()).toBe(appointmentMockData);
});
});
describe('create', () => {
it('should create an entry', async () => {
const res = {
accompanimentType: 'RDV Conseiller Numérique',
name: 'test',
onlineDemarcheType: ['Démarches Métropolitaines'],
phone: '65 65',
surname: 'teztrfzegfv',
structureOrientator: { structureName: 'name', structureMail: 'mail@structure.org', structurePhone: '12 34' },
structureRDV: '6093ba0e2ab5775cfc01ed3e',
socialWorkerId: '60648b104067f10013d69929',
};
mockMailService.loadJsonConfig.mockReturnValueOnce({ subject: 'Teste Mail' });
ejsSpy.mockResolvedValueOnce('coucou');
mockAppointmentModel.create.mockResolvedValueOnce(res);
expect(await appointmentService.create(res)).toStrictEqual(res);
expect(mockMailService.send).toHaveBeenCalledTimes(1);