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 () => { const spyer = jest.spyOn(parametersModelMock, 'findOne'); parametersModelMock.findOne.mockResolvedValueOnce(null); try { await service.setParameterLockdownInfoDisplay(true); expect(true).toBe(false); } catch (error) { expect(error.message).toBe('Parameters not found'); expect(error.status).toBe(HttpStatus.NOT_FOUND); } expect(spyer).toBeCalledTimes(1); }); }); });