89 lines
2.6 KiB
TypeScript
89 lines
2.6 KiB
TypeScript
import { PrismaService } from '@libs/db/prisma.service';
|
|
import {
|
|
PARAMS_PROVIDER,
|
|
TIMEZONE_FINDER,
|
|
TIME_CONVERTER,
|
|
} from '@modules/ad/ad.di-tokens';
|
|
import { AdMapper } from '@modules/ad/ad.mapper';
|
|
import { DefaultParamsProviderPort } from '@modules/ad/core/ports/default-params-provider.port';
|
|
import { TimeConverterPort } from '@modules/ad/core/ports/time-converter.port';
|
|
import { TimezoneFinderPort } from '@modules/ad/core/ports/timezone-finder.port';
|
|
import { AdRepository } from '@modules/ad/infrastructure/ad.repository';
|
|
import { EventEmitter2, EventEmitterModule } from '@nestjs/event-emitter';
|
|
import { Test, TestingModule } from '@nestjs/testing';
|
|
|
|
const mockDefaultParamsProvider: DefaultParamsProviderPort = {
|
|
getParams: () => {
|
|
return {
|
|
MON_MARGIN: 900,
|
|
TUE_MARGIN: 900,
|
|
WED_MARGIN: 900,
|
|
THU_MARGIN: 900,
|
|
FRI_MARGIN: 900,
|
|
SAT_MARGIN: 900,
|
|
SUN_MARGIN: 900,
|
|
DRIVER: false,
|
|
SEATS_PROPOSED: 3,
|
|
PASSENGER: true,
|
|
SEATS_REQUESTED: 1,
|
|
STRICT: false,
|
|
DEFAULT_TIMEZONE: 'Europe/Paris',
|
|
};
|
|
},
|
|
};
|
|
|
|
const mockTimezoneFinder: TimezoneFinderPort = {
|
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
timezones: jest.fn().mockImplementation((lon: number, lat: number) => {
|
|
if (lon < 60) return 'Europe/Paris';
|
|
return 'America/New_York';
|
|
}),
|
|
};
|
|
|
|
const mockTimeConverter: TimeConverterPort = {
|
|
localDateTimeToUtc: jest
|
|
.fn()
|
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
.mockImplementation((datetime: Date, timezone: string, dst?: boolean) => {
|
|
return datetime;
|
|
}),
|
|
utcDatetimeToLocalTime: jest.fn(),
|
|
};
|
|
|
|
describe('Ad repository', () => {
|
|
let prismaService: PrismaService;
|
|
let adMapper: AdMapper;
|
|
let eventEmitter: EventEmitter2;
|
|
|
|
beforeAll(async () => {
|
|
const module: TestingModule = await Test.createTestingModule({
|
|
imports: [EventEmitterModule.forRoot()],
|
|
providers: [
|
|
PrismaService,
|
|
AdMapper,
|
|
{
|
|
provide: PARAMS_PROVIDER,
|
|
useValue: mockDefaultParamsProvider,
|
|
},
|
|
{
|
|
provide: TIMEZONE_FINDER,
|
|
useValue: mockTimezoneFinder,
|
|
},
|
|
{
|
|
provide: TIME_CONVERTER,
|
|
useValue: mockTimeConverter,
|
|
},
|
|
],
|
|
}).compile();
|
|
|
|
prismaService = module.get<PrismaService>(PrismaService);
|
|
adMapper = module.get<AdMapper>(AdMapper);
|
|
eventEmitter = module.get<EventEmitter2>(EventEmitter2);
|
|
});
|
|
it('should be defined', () => {
|
|
expect(
|
|
new AdRepository(prismaService, adMapper, eventEmitter),
|
|
).toBeDefined();
|
|
});
|
|
});
|