2023-05-02 15:26:04 +00:00
|
|
|
import { CreateAdRequest } from '../../../domain/dtos/create-ad.request';
|
|
|
|
import { CreateAdUseCase } from '../../../domain/usecases/create-ad.usecase';
|
|
|
|
import { Test, TestingModule } from '@nestjs/testing';
|
|
|
|
import { AutomapperModule } from '@automapper/nestjs';
|
|
|
|
import { classes } from '@automapper/classes';
|
|
|
|
import { AdRepository } from '../../../adapters/secondaries/ad.repository';
|
|
|
|
import { CreateAdCommand } from '../../../commands/create-ad.command';
|
|
|
|
import { Ad } from '../../../domain/entities/ad';
|
|
|
|
import { AdProfile } from '../../../mappers/ad.profile';
|
2023-05-11 15:47:55 +00:00
|
|
|
import { Frequency } from '../../../domain/types/frequency.enum';
|
|
|
|
import { IDefaultParams } from '../../../domain/types/default-params.type';
|
2023-05-02 15:26:04 +00:00
|
|
|
|
|
|
|
const mockAdRepository = {};
|
|
|
|
|
2023-05-11 15:47:55 +00:00
|
|
|
const mockGeorouterCreator = {
|
|
|
|
create: jest.fn().mockImplementation(),
|
|
|
|
};
|
|
|
|
|
|
|
|
const defaultParams: IDefaultParams = {
|
|
|
|
GEOROUTER_TYPE: 'graphhopper',
|
|
|
|
GEOROUTER_URL: 'http://localhost',
|
|
|
|
};
|
|
|
|
|
2023-05-02 15:26:04 +00:00
|
|
|
const createAdRequest: CreateAdRequest = {
|
|
|
|
uuid: '77c55dfc-c28b-4026-942e-f94e95401fb1',
|
2023-05-11 15:47:55 +00:00
|
|
|
userUuid: 'dfd993f6-7889-4876-9570-5e1d7b6e3f42',
|
2023-05-02 15:26:04 +00:00
|
|
|
driver: true,
|
|
|
|
passenger: false,
|
2023-05-11 15:47:55 +00:00
|
|
|
frequency: Frequency.RECURRENT,
|
|
|
|
fromDate: new Date('2023-04-26'),
|
|
|
|
toDate: new Date('2024-04-25'),
|
2023-05-02 15:26:04 +00:00
|
|
|
monTime: '07:00',
|
|
|
|
tueTime: '07:00',
|
|
|
|
wedTime: '07:00',
|
|
|
|
thuTime: '07:00',
|
|
|
|
friTime: '07:00',
|
|
|
|
satTime: null,
|
|
|
|
sunTime: null,
|
|
|
|
monMargin: 900,
|
|
|
|
tueMargin: 900,
|
|
|
|
wedMargin: 900,
|
|
|
|
thuMargin: 900,
|
|
|
|
friMargin: 900,
|
|
|
|
satMargin: 900,
|
|
|
|
sunMargin: 900,
|
|
|
|
seatsDriver: 3,
|
|
|
|
seatsPassenger: 1,
|
2023-05-11 15:47:55 +00:00
|
|
|
strict: false,
|
2023-05-02 15:26:04 +00:00
|
|
|
waypoints: [
|
|
|
|
{ lon: 6, lat: 45 },
|
|
|
|
{ lon: 6.5, lat: 45.5 },
|
|
|
|
],
|
|
|
|
};
|
|
|
|
|
|
|
|
describe('CreateAdUseCase', () => {
|
|
|
|
let createAdUseCase: CreateAdUseCase;
|
|
|
|
|
|
|
|
beforeAll(async () => {
|
|
|
|
const module: TestingModule = await Test.createTestingModule({
|
|
|
|
imports: [AutomapperModule.forRoot({ strategyInitializer: classes() })],
|
|
|
|
providers: [
|
|
|
|
{
|
|
|
|
provide: AdRepository,
|
|
|
|
useValue: mockAdRepository,
|
|
|
|
},
|
|
|
|
AdProfile,
|
|
|
|
CreateAdUseCase,
|
|
|
|
],
|
|
|
|
}).compile();
|
|
|
|
|
|
|
|
createAdUseCase = module.get<CreateAdUseCase>(CreateAdUseCase);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should be defined', () => {
|
|
|
|
expect(createAdUseCase).toBeDefined();
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('execute', () => {
|
|
|
|
it('should create an ad', async () => {
|
|
|
|
const ad = await createAdUseCase.execute(
|
2023-05-11 15:47:55 +00:00
|
|
|
new CreateAdCommand(
|
|
|
|
createAdRequest,
|
|
|
|
defaultParams,
|
|
|
|
mockGeorouterCreator,
|
|
|
|
),
|
2023-05-02 15:26:04 +00:00
|
|
|
);
|
|
|
|
expect(ad).toBeInstanceOf(Ad);
|
|
|
|
});
|
|
|
|
|
|
|
|
// it('should throw an exception when error occurs', async () => {
|
|
|
|
// await expect(
|
|
|
|
// createAdUseCase.execute(
|
|
|
|
// new MatchQuery(
|
|
|
|
// matchRequest,
|
|
|
|
// defaultParams,
|
|
|
|
// mockGeorouterCreator,
|
|
|
|
// mockTimezoneFinder,
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// ).rejects.toBeInstanceOf(MatcherException);
|
|
|
|
// });
|
|
|
|
});
|
|
|
|
});
|