basic match query
This commit is contained in:
parent
a98e5b3c83
commit
effe51b9a2
|
@ -116,4 +116,12 @@ export class MatchRequestDto {
|
||||||
@Min(0)
|
@Min(0)
|
||||||
@Max(1)
|
@Max(1)
|
||||||
maxDetourDurationRatio?: number;
|
maxDetourDurationRatio?: number;
|
||||||
|
|
||||||
|
@IsOptional()
|
||||||
|
@IsInt()
|
||||||
|
page?: number;
|
||||||
|
|
||||||
|
@IsOptional()
|
||||||
|
@IsInt()
|
||||||
|
perPage?: number;
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ export class MatchGrpcController {
|
||||||
data: matches,
|
data: matches,
|
||||||
page: 1,
|
page: 1,
|
||||||
perPage: 5,
|
perPage: 5,
|
||||||
total: 1,
|
total: matches.length,
|
||||||
};
|
};
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
throw new RpcException({
|
throw new RpcException({
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
|
import { RpcExceptionCode } from '@mobicoop/ddd-library';
|
||||||
import { Frequency } from '@modules/matcher/core/domain/match.types';
|
import { Frequency } from '@modules/matcher/core/domain/match.types';
|
||||||
import { MatchRequestDto } from '@modules/matcher/interface/grpc-controllers/dtos/match.request.dto';
|
import { MatchRequestDto } from '@modules/matcher/interface/grpc-controllers/dtos/match.request.dto';
|
||||||
import { WaypointDto } from '@modules/matcher/interface/grpc-controllers/dtos/waypoint.dto';
|
import { WaypointDto } from '@modules/matcher/interface/grpc-controllers/dtos/waypoint.dto';
|
||||||
import { MatchGrpcController } from '@modules/matcher/interface/grpc-controllers/match.grpc-controller';
|
import { MatchGrpcController } from '@modules/matcher/interface/grpc-controllers/match.grpc-controller';
|
||||||
import { QueryBus } from '@nestjs/cqrs';
|
import { QueryBus } from '@nestjs/cqrs';
|
||||||
|
import { RpcException } from '@nestjs/microservices';
|
||||||
import { Test, TestingModule } from '@nestjs/testing';
|
import { Test, TestingModule } from '@nestjs/testing';
|
||||||
|
|
||||||
const originWaypoint: WaypointDto = {
|
const originWaypoint: WaypointDto = {
|
||||||
|
@ -38,14 +40,19 @@ const punctualMatchRequestDto: MatchRequestDto = {
|
||||||
};
|
};
|
||||||
|
|
||||||
const mockQueryBus = {
|
const mockQueryBus = {
|
||||||
execute: jest.fn().mockImplementation(() => [
|
execute: jest
|
||||||
|
.fn()
|
||||||
|
.mockImplementationOnce(() => [
|
||||||
{
|
{
|
||||||
adId: 1,
|
adId: 1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
adId: 2,
|
adId: 2,
|
||||||
},
|
},
|
||||||
]),
|
])
|
||||||
|
.mockImplementationOnce(() => {
|
||||||
|
throw new Error();
|
||||||
|
}),
|
||||||
};
|
};
|
||||||
|
|
||||||
describe('Match Grpc Controller', () => {
|
describe('Match Grpc Controller', () => {
|
||||||
|
@ -74,9 +81,23 @@ describe('Match Grpc Controller', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return matches', async () => {
|
it('should return matches', async () => {
|
||||||
|
jest.spyOn(mockQueryBus, 'execute');
|
||||||
const matchPaginatedResponseDto = await matchGrpcController.match(
|
const matchPaginatedResponseDto = await matchGrpcController.match(
|
||||||
punctualMatchRequestDto,
|
punctualMatchRequestDto,
|
||||||
);
|
);
|
||||||
expect(matchPaginatedResponseDto.data).toHaveLength(2);
|
expect(matchPaginatedResponseDto.data).toHaveLength(2);
|
||||||
|
expect(mockQueryBus.execute).toHaveBeenCalledTimes(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should throw a generic RpcException', async () => {
|
||||||
|
jest.spyOn(mockQueryBus, 'execute');
|
||||||
|
expect.assertions(3);
|
||||||
|
try {
|
||||||
|
await matchGrpcController.match(punctualMatchRequestDto);
|
||||||
|
} catch (e: any) {
|
||||||
|
expect(e).toBeInstanceOf(RpcException);
|
||||||
|
expect(e.error.code).toBe(RpcExceptionCode.UNKNOWN);
|
||||||
|
}
|
||||||
|
expect(mockQueryBus.execute).toHaveBeenCalledTimes(1);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue