Merge branch 'testing' into 'main'
Testing See merge request v3/service/ad!2
This commit is contained in:
commit
2399315e8a
|
@ -3,7 +3,4 @@ import { AutoMap } from '@automapper/classes';
|
|||
export class AdPresenter {
|
||||
@AutoMap()
|
||||
uuid: string;
|
||||
|
||||
@AutoMap()
|
||||
driver: boolean;
|
||||
}
|
||||
|
|
|
@ -3,7 +3,4 @@ import { AutoMap } from '@automapper/classes';
|
|||
export class Ad {
|
||||
@AutoMap()
|
||||
uuid: string;
|
||||
|
||||
@AutoMap()
|
||||
driver: boolean;
|
||||
}
|
||||
|
|
|
@ -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>(FindAdByUuidUseCase);
|
||||
});
|
||||
it('should be defined', () => {
|
||||
expect(findAdByUuidUseCase).toBeDefined();
|
||||
});
|
||||
describe('execute', () => {
|
||||
it('should return an ad', async () => {
|
||||
const findAdByUuidRequest: FindAdByUuidRequest =
|
||||
new FindAdByUuidRequest();
|
||||
findAdByUuidRequest.uuid = 'bb281075-1b98-4456-89d6-c643d3044a91';
|
||||
const ad = await findAdByUuidUseCase.execute(
|
||||
new FindAdByUuidQuery(findAdByUuidRequest),
|
||||
);
|
||||
expect(ad).toBe(mockAd);
|
||||
});
|
||||
it('should throw an error if ad 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);
|
||||
});
|
||||
});
|
||||
});
|
|
@ -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>(Messager);
|
||||
});
|
||||
|
||||
it('should be defined', () => {
|
||||
expect(messager).toBeDefined();
|
||||
});
|
||||
|
||||
it('should publish a message', async () => {
|
||||
jest.spyOn(mockAmqpConnection, 'publish');
|
||||
messager.publish('ad.create.info', 'my-test');
|
||||
expect(mockAmqpConnection.publish).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue