Skip to content
Snippets Groups Projects
appointment.controller.spec.ts 1.71 KiB
Newer Older
import { getModelToken } from '@nestjs/mongoose';
import { Test } from '@nestjs/testing';
import { appointmentMockData, singleAppointmentMock } from '../../test/mock/data/appointment.mock.data';
import { AppointmentController } from './appointment.controller';
import { Appointment } from './appointment.schema';
import { AppointmentService } from './appointment.service';

describe('UserRegistryController', () => {
  let appoinmentController: AppointmentController;

  const appointmentServiceMock = {
    findAll: jest.fn(),
    create: jest.fn(),
  };

  beforeEach(async () => {
    const module = await Test.createTestingModule({
      imports: [],
      providers: [
        {
          provide: AppointmentService,
          useValue: appointmentServiceMock,
        },
        {
          provide: getModelToken('Appointment'),
          useValue: Appointment,
        },
      ],
      controllers: [AppointmentController],
    }).compile();

    appoinmentController = module.get<AppointmentController>(AppointmentController);
  });

  it('should be defined', () => {
    expect(appoinmentController).toBeDefined();
  });

  describe('findAll', () => {
    it('should findAll entries', async () => {
      appointmentServiceMock.findAll.mockResolvedValue(appointmentMockData);
      const reply = await appoinmentController.findAll();
      expect(reply).toStrictEqual(appointmentMockData);
    });
  });
  describe('createAppointment', () => {
    it('should create a new entry', async () => {
      appointmentServiceMock.create.mockResolvedValue(singleAppointmentMock);
      const reply = await appoinmentController.createAppointment(singleAppointmentMock);
      expect(reply).toStrictEqual(singleAppointmentMock);
    });
  });
});