import { GetDetailedRouteController } from '@modules/geography/interface/controllers/get-detailed-route.controller'; import { RouteMapper } from '@modules/geography/route.mapper'; import { QueryBus } from '@nestjs/cqrs'; import { Test, TestingModule } from '@nestjs/testing'; const mockQueryBus = { execute: jest.fn(), }; const mockRouteMapper = { toPersistence: jest.fn(), toDomain: jest.fn(), toResponse: jest.fn(), }; describe('Get Detailed Route Controller', () => { let getDetailedRouteController: GetDetailedRouteController; beforeAll(async () => { const module: TestingModule = await Test.createTestingModule({ providers: [ { provide: QueryBus, useValue: mockQueryBus, }, { provide: RouteMapper, useValue: mockRouteMapper, }, GetDetailedRouteController, ], }).compile(); getDetailedRouteController = module.get( GetDetailedRouteController, ); }); afterEach(async () => { jest.clearAllMocks(); }); it('should be defined', () => { expect(getDetailedRouteController).toBeDefined(); }); it('should get a route', async () => { jest.spyOn(mockQueryBus, 'execute'); await getDetailedRouteController.get({ waypoints: [ { lat: 48.689445, lon: 6.17651, }, { lat: 48.8566, lon: 2.3522, }, ], }); expect(mockQueryBus.execute).toHaveBeenCalledTimes(1); }); });