From 017800b90ac732f2f79aa20aca3f6cdd9a95a6b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Chevalier?= Date: Thu, 4 May 2023 14:36:28 +0200 Subject: [PATCH 1/3] adding tests --- .../ad/adapters/primaries/ad.presenter.ts | 3 - src/modules/ad/domain/entities/ad.ts | 3 - .../unit/find-ad-by-uuid.usecase.spec.ts | 71 +++++++++++++++++++ src/modules/ad/tests/unit/messager.spec.ts | 47 ++++++++++++ 4 files changed, 118 insertions(+), 6 deletions(-) create mode 100644 src/modules/ad/tests/unit/find-ad-by-uuid.usecase.spec.ts create mode 100644 src/modules/ad/tests/unit/messager.spec.ts diff --git a/src/modules/ad/adapters/primaries/ad.presenter.ts b/src/modules/ad/adapters/primaries/ad.presenter.ts index b4e58e4..1a4d67c 100644 --- a/src/modules/ad/adapters/primaries/ad.presenter.ts +++ b/src/modules/ad/adapters/primaries/ad.presenter.ts @@ -3,7 +3,4 @@ import { AutoMap } from '@automapper/classes'; export class AdPresenter { @AutoMap() uuid: string; - - @AutoMap() - driver: boolean; } diff --git a/src/modules/ad/domain/entities/ad.ts b/src/modules/ad/domain/entities/ad.ts index b4e95e0..0350f1a 100644 --- a/src/modules/ad/domain/entities/ad.ts +++ b/src/modules/ad/domain/entities/ad.ts @@ -3,7 +3,4 @@ import { AutoMap } from '@automapper/classes'; export class Ad { @AutoMap() uuid: string; - - @AutoMap() - driver: boolean; } diff --git a/src/modules/ad/tests/unit/find-ad-by-uuid.usecase.spec.ts b/src/modules/ad/tests/unit/find-ad-by-uuid.usecase.spec.ts new file mode 100644 index 0000000..f895c65 --- /dev/null +++ b/src/modules/ad/tests/unit/find-ad-by-uuid.usecase.spec.ts @@ -0,0 +1,71 @@ +import { NotFoundException } from '@nestjs/common'; +import { Test, TestingModule } from '@nestjs/testing'; +import { Messager } from '../../adapters/secondaries/messager'; +import { FindAdByUuidQuery } from '../../queries/find-ad-by-uuid.query'; +import { AdsRepository } from '../../adapters/secondaries/ads.repository'; +import { FindAdByUuidUseCase } from '../../domain/usecases/find-ad-by-uuid.usecase'; +import { FindAdByUuidRequest } from '../../domain/dtos/find-ad-by-uuid.request'; + +const mockAd = { + uuid: 'bb281075-1b98-4456-89d6-c643d3044a91', +}; + +const mockAdRepository = { + findOneByUuid: jest + .fn() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .mockImplementationOnce((query?: FindAdByUuidQuery) => { + return Promise.resolve(mockAd); + }) + .mockImplementation(() => { + return Promise.resolve(undefined); + }), +}; + +const mockMessager = { + publish: jest.fn().mockImplementation(), +}; + +describe('FindAdByUuidUseCase', () => { + let findAdByUuidUseCase: FindAdByUuidUseCase; + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule({ + imports: [], + providers: [ + { + provide: AdsRepository, + useValue: mockAdRepository, + }, + { + provide: Messager, + useValue: mockMessager, + }, + FindAdByUuidUseCase, + ], + }).compile(); + + findAdByUuidUseCase = module.get(FindAdByUuidUseCase); + }); + it('should be defined', () => { + expect(findAdByUuidUseCase).toBeDefined(); + }); + describe('execute', () => { + it('should return a user', async () => { + const findAdByUuidRequest: FindAdByUuidRequest = + new FindAdByUuidRequest(); + findAdByUuidRequest.uuid = 'bb281075-1b98-4456-89d6-c643d3044a91'; + const user = await findAdByUuidUseCase.execute( + new FindAdByUuidQuery(findAdByUuidRequest), + ); + expect(user).toBe(mockAd); + }); + it('should throw an error if user does not exist', async () => { + const findAdByUuidRequest: FindAdByUuidRequest = + new FindAdByUuidRequest(); + findAdByUuidRequest.uuid = 'bb281075-1b98-4456-89d6-c643d3044a90'; + await expect( + findAdByUuidUseCase.execute(new FindAdByUuidQuery(findAdByUuidRequest)), + ).rejects.toBeInstanceOf(NotFoundException); + }); + }); +}); diff --git a/src/modules/ad/tests/unit/messager.spec.ts b/src/modules/ad/tests/unit/messager.spec.ts new file mode 100644 index 0000000..4a3c396 --- /dev/null +++ b/src/modules/ad/tests/unit/messager.spec.ts @@ -0,0 +1,47 @@ +import { AmqpConnection } from '@golevelup/nestjs-rabbitmq'; +import { ConfigService } from '@nestjs/config'; +import { Test, TestingModule } from '@nestjs/testing'; +import { Messager } from '../../adapters/secondaries/messager'; + +const mockAmqpConnection = { + publish: jest.fn().mockImplementation(), +}; + +const mockConfigService = { + get: jest.fn().mockResolvedValue({ + RMQ_EXCHANGE: 'mobicoop', + }), +}; + +describe('Messager', () => { + let messager: Messager; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule({ + imports: [], + providers: [ + Messager, + { + provide: AmqpConnection, + useValue: mockAmqpConnection, + }, + { + provide: ConfigService, + useValue: mockConfigService, + }, + ], + }).compile(); + + messager = module.get(Messager); + }); + + it('should be defined', () => { + expect(messager).toBeDefined(); + }); + + it('should publish a message', async () => { + jest.spyOn(mockAmqpConnection, 'publish'); + messager.publish('user.create.info', 'my-test'); + expect(mockAmqpConnection.publish).toHaveBeenCalledTimes(1); + }); +}); From d17a3b986764ee93503f82a0944a26662d1f3bf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Chevalier?= Date: Thu, 4 May 2023 15:13:01 +0200 Subject: [PATCH 2/3] adding testing for find ad by uuid --- src/modules/ad/tests/unit/find-ad-by-uuid.usecase.spec.ts | 4 ++-- src/modules/ad/tests/unit/messager.spec.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/modules/ad/tests/unit/find-ad-by-uuid.usecase.spec.ts b/src/modules/ad/tests/unit/find-ad-by-uuid.usecase.spec.ts index f895c65..df3375b 100644 --- a/src/modules/ad/tests/unit/find-ad-by-uuid.usecase.spec.ts +++ b/src/modules/ad/tests/unit/find-ad-by-uuid.usecase.spec.ts @@ -50,7 +50,7 @@ describe('FindAdByUuidUseCase', () => { expect(findAdByUuidUseCase).toBeDefined(); }); describe('execute', () => { - it('should return a user', async () => { + it('should return an ad', async () => { const findAdByUuidRequest: FindAdByUuidRequest = new FindAdByUuidRequest(); findAdByUuidRequest.uuid = 'bb281075-1b98-4456-89d6-c643d3044a91'; @@ -59,7 +59,7 @@ describe('FindAdByUuidUseCase', () => { ); expect(user).toBe(mockAd); }); - it('should throw an error if user does not exist', async () => { + it('should throw an error if ad does not exist', async () => { const findAdByUuidRequest: FindAdByUuidRequest = new FindAdByUuidRequest(); findAdByUuidRequest.uuid = 'bb281075-1b98-4456-89d6-c643d3044a90'; diff --git a/src/modules/ad/tests/unit/messager.spec.ts b/src/modules/ad/tests/unit/messager.spec.ts index 4a3c396..2296553 100644 --- a/src/modules/ad/tests/unit/messager.spec.ts +++ b/src/modules/ad/tests/unit/messager.spec.ts @@ -41,7 +41,7 @@ describe('Messager', () => { it('should publish a message', async () => { jest.spyOn(mockAmqpConnection, 'publish'); - messager.publish('user.create.info', 'my-test'); + messager.publish('ad.create.info', 'my-test'); expect(mockAmqpConnection.publish).toHaveBeenCalledTimes(1); }); }); From 2208947f19207678ff9a6cb9f0121358278cd159 Mon Sep 17 00:00:00 2001 From: Sylvain Briat Date: Thu, 4 May 2023 13:33:28 +0000 Subject: [PATCH 3/3] change user to ad --- src/modules/ad/tests/unit/find-ad-by-uuid.usecase.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/ad/tests/unit/find-ad-by-uuid.usecase.spec.ts b/src/modules/ad/tests/unit/find-ad-by-uuid.usecase.spec.ts index df3375b..7e124df 100644 --- a/src/modules/ad/tests/unit/find-ad-by-uuid.usecase.spec.ts +++ b/src/modules/ad/tests/unit/find-ad-by-uuid.usecase.spec.ts @@ -54,10 +54,10 @@ describe('FindAdByUuidUseCase', () => { const findAdByUuidRequest: FindAdByUuidRequest = new FindAdByUuidRequest(); findAdByUuidRequest.uuid = 'bb281075-1b98-4456-89d6-c643d3044a91'; - const user = await findAdByUuidUseCase.execute( + const ad = await findAdByUuidUseCase.execute( new FindAdByUuidQuery(findAdByUuidRequest), ); - expect(user).toBe(mockAd); + expect(ad).toBe(mockAd); }); it('should throw an error if ad does not exist', async () => { const findAdByUuidRequest: FindAdByUuidRequest =