Skip to content
Snippets Groups Projects
parameters.service.spec.ts 2.66 KiB
import { HttpStatus } from '@nestjs/common';
import { getModelToken } from '@nestjs/mongoose';
import { Test, TestingModule } from '@nestjs/testing';
import { ParametersService } from './parameters.service';
import { Parameters } from './schemas/parameters.schema';

describe('ParametersService', () => {
  let service: ParametersService;

  const parametersModelMock = {
    findOne: jest.fn(),
  };

  beforeEach(async () => {
    const module: TestingModule = await Test.createTestingModule({
      providers: [
        ParametersService,
        {
          provide: getModelToken(Parameters.name),
          useValue: parametersModelMock,
        },
      ],
    }).compile();

    service = module.get<ParametersService>(ParametersService);
  });
  afterEach(() => {
    jest.clearAllMocks();
  });

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

  describe('getParameters', () => {
    it('should get parameters', async () => {
      const spyer = jest.spyOn(parametersModelMock, 'findOne');
      parametersModelMock.findOne.mockResolvedValueOnce({ lockdownInfoDisplay: false });

      const result = await service.getParameters();
      expect(spyer).toBeCalledTimes(1);
      expect(result).toEqual({ lockdownInfoDisplay: false });
    });

    it('should throw error because parameters was not found', async () => {
      const spyer = jest.spyOn(parametersModelMock, 'findOne');
      parametersModelMock.findOne.mockResolvedValueOnce(null);

      try {
        await service.getParameters();
        expect(true).toBe(false);
      } catch (error) {
        expect(error.message).toBe('Parameters not found');
        expect(error.status).toBe(HttpStatus.NOT_FOUND);
      }
      expect(spyer).toBeCalledTimes(1);
    });
  });

  describe('setParameters', () => {
    it('should set parameters', async () => {
      const spyer = jest.spyOn(parametersModelMock, 'findOne');
      parametersModelMock.findOne.mockResolvedValueOnce({ lockdownInfoDisplay: false, save: jest.fn() });

      const result = await service.setParameterLockdownInfoDisplay(true);
      expect(spyer).toBeCalledTimes(1);
      expect(result.lockdownInfoDisplay).toEqual(true);
    });

    it('should throw error because parameters was not found', async () => {