Unit tests for the update-ad service
This commit is contained in:
parent
f6c3204708
commit
5aa4d9e568
|
@ -0,0 +1,10 @@
|
||||||
|
import { DateTimeTransformerPort } from '@modules/ad/core/application/ports/datetime-transformer.port';
|
||||||
|
|
||||||
|
export function mockInputDateTimeTransformer(): DateTimeTransformerPort {
|
||||||
|
return {
|
||||||
|
fromDate: jest.fn(),
|
||||||
|
toDate: jest.fn(),
|
||||||
|
day: jest.fn(),
|
||||||
|
time: jest.fn(),
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,18 +1,17 @@
|
||||||
import { Test, TestingModule } from '@nestjs/testing';
|
import { AggregateID, ConflictException } from '@mobicoop/ddd-library';
|
||||||
import {
|
import {
|
||||||
AD_REPOSITORY,
|
AD_REPOSITORY,
|
||||||
INPUT_DATETIME_TRANSFORMER,
|
INPUT_DATETIME_TRANSFORMER,
|
||||||
} from '@modules/ad/ad.di-tokens';
|
} from '@modules/ad/ad.di-tokens';
|
||||||
import { WaypointDto } from '@modules/ad/interface/grpc-controllers/dtos/waypoint.dto';
|
|
||||||
import { CreateAdRequestDto } from '@modules/ad/interface/grpc-controllers/dtos/create-ad.request.dto';
|
|
||||||
import { AggregateID } from '@mobicoop/ddd-library';
|
|
||||||
import { AdEntity } from '@modules/ad/core/domain/ad.entity';
|
|
||||||
import { ConflictException } from '@mobicoop/ddd-library';
|
|
||||||
import { Frequency } from '@modules/ad/core/domain/ad.types';
|
|
||||||
import { CreateAdService } from '@modules/ad/core/application/commands/create-ad/create-ad.service';
|
|
||||||
import { CreateAdCommand } from '@modules/ad/core/application/commands/create-ad/create-ad.command';
|
import { CreateAdCommand } from '@modules/ad/core/application/commands/create-ad/create-ad.command';
|
||||||
|
import { CreateAdService } from '@modules/ad/core/application/commands/create-ad/create-ad.service';
|
||||||
|
import { AdEntity } from '@modules/ad/core/domain/ad.entity';
|
||||||
import { AdAlreadyExistsException } from '@modules/ad/core/domain/ad.errors';
|
import { AdAlreadyExistsException } from '@modules/ad/core/domain/ad.errors';
|
||||||
import { DateTimeTransformerPort } from '@modules/ad/core/application/ports/datetime-transformer.port';
|
import { Frequency } from '@modules/ad/core/domain/ad.types';
|
||||||
|
import { CreateAdRequestDto } from '@modules/ad/interface/grpc-controllers/dtos/create-ad.request.dto';
|
||||||
|
import { WaypointDto } from '@modules/ad/interface/grpc-controllers/dtos/waypoint.dto';
|
||||||
|
import { Test, TestingModule } from '@nestjs/testing';
|
||||||
|
import { mockInputDateTimeTransformer } from '../ad.mocks';
|
||||||
|
|
||||||
const originWaypoint: WaypointDto = {
|
const originWaypoint: WaypointDto = {
|
||||||
position: 0,
|
position: 0,
|
||||||
|
@ -64,13 +63,6 @@ const mockAdRepository = {
|
||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
|
|
||||||
const mockInputDateTimeTransformer: DateTimeTransformerPort = {
|
|
||||||
fromDate: jest.fn(),
|
|
||||||
toDate: jest.fn(),
|
|
||||||
day: jest.fn(),
|
|
||||||
time: jest.fn(),
|
|
||||||
};
|
|
||||||
|
|
||||||
describe('create-ad.service', () => {
|
describe('create-ad.service', () => {
|
||||||
let createAdService: CreateAdService;
|
let createAdService: CreateAdService;
|
||||||
|
|
||||||
|
@ -83,7 +75,7 @@ describe('create-ad.service', () => {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
provide: INPUT_DATETIME_TRANSFORMER,
|
provide: INPUT_DATETIME_TRANSFORMER,
|
||||||
useValue: mockInputDateTimeTransformer,
|
useValue: mockInputDateTimeTransformer(),
|
||||||
},
|
},
|
||||||
CreateAdService,
|
CreateAdService,
|
||||||
],
|
],
|
||||||
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
import {
|
||||||
|
AD_REPOSITORY,
|
||||||
|
INPUT_DATETIME_TRANSFORMER,
|
||||||
|
} from '@modules/ad/ad.di-tokens';
|
||||||
|
import { UpdateAdCommand } from '@modules/ad/core/application/commands/update-ad/update-ad.command';
|
||||||
|
import { UpdateAdService } from '@modules/ad/core/application/commands/update-ad/update-ad.service';
|
||||||
|
import { AdEntity } from '@modules/ad/core/domain/ad.entity';
|
||||||
|
import { Status } from '@modules/ad/core/domain/ad.types';
|
||||||
|
import { EventEmitter2 } from '@nestjs/event-emitter';
|
||||||
|
import { Test, TestingModule } from '@nestjs/testing';
|
||||||
|
import { mockInputDateTimeTransformer } from '../ad.mocks';
|
||||||
|
import { punctualCreateAdRequest } from '../interface/ad.fixtures';
|
||||||
|
import { punctualPassengerCreateAdProps } from './ad.fixtures';
|
||||||
|
|
||||||
|
const mockAdRepository = {
|
||||||
|
findOneById: jest.fn().mockImplementation(
|
||||||
|
async (id) =>
|
||||||
|
new AdEntity({
|
||||||
|
id,
|
||||||
|
props: { ...punctualPassengerCreateAdProps(), status: Status.VALID },
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
update: jest.fn(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const mockEventEmitter = {
|
||||||
|
emitAsync: jest.fn(),
|
||||||
|
};
|
||||||
|
|
||||||
|
describe('create-ad.service', () => {
|
||||||
|
let updateAdService: UpdateAdService;
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
const module: TestingModule = await Test.createTestingModule({
|
||||||
|
providers: [
|
||||||
|
{
|
||||||
|
provide: AD_REPOSITORY,
|
||||||
|
useValue: mockAdRepository,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provide: INPUT_DATETIME_TRANSFORMER,
|
||||||
|
useValue: mockInputDateTimeTransformer(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provide: EventEmitter2,
|
||||||
|
useValue: mockEventEmitter,
|
||||||
|
},
|
||||||
|
UpdateAdService,
|
||||||
|
],
|
||||||
|
}).compile();
|
||||||
|
|
||||||
|
updateAdService = module.get<UpdateAdService>(UpdateAdService);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be defined', () => {
|
||||||
|
expect(updateAdService).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('execute', () => {
|
||||||
|
it('should update the ad in the repository and emit an event', async () => {
|
||||||
|
const command = new UpdateAdCommand({
|
||||||
|
adId: '200d61a8-d878-4378-a609-c19ea71633d2',
|
||||||
|
...punctualCreateAdRequest(),
|
||||||
|
});
|
||||||
|
|
||||||
|
await updateAdService.execute(command);
|
||||||
|
expect(mockAdRepository.update).toHaveBeenCalled();
|
||||||
|
expect(mockEventEmitter.emitAsync).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue