123 lines
4.3 KiB
TypeScript
123 lines
4.3 KiB
TypeScript
import { Day } from '../../../domain/types/day.enum';
|
|
import { CreateAdRequest } from '../../../domain/dtos/create-ad.request';
|
|
import { ScheduleDTO } from '../../../domain/dtos/schedule.dto';
|
|
import { FrequencyNormaliser } from '../../../domain/entities/frequency.normaliser';
|
|
import { Frequency } from '../../../domain/types/frequency.enum';
|
|
|
|
describe('recurrent normalizer transformer for punctual ad ', () => {
|
|
const recurrentNormaliser = new FrequencyNormaliser();
|
|
it('should transform punctual ad into recurrent ad ', () => {
|
|
const punctualAd: CreateAdRequest = {
|
|
userUuid: '',
|
|
frequency: Frequency.PUNCTUAL,
|
|
departureDateTime: new Date('05-03-2023 12:39:39 '),
|
|
schedule: {} as ScheduleDTO,
|
|
addresses: [],
|
|
};
|
|
expect(recurrentNormaliser.fromDateResolver(punctualAd)).toBe(
|
|
punctualAd.departureDateTime,
|
|
);
|
|
expect(recurrentNormaliser.toDateResolver(punctualAd)).toBe(
|
|
punctualAd.departureDateTime,
|
|
);
|
|
expect(
|
|
recurrentNormaliser.scheduleResolver(punctualAd, Day.mon),
|
|
).toBeUndefined();
|
|
expect(
|
|
recurrentNormaliser.scheduleResolver(punctualAd, Day.tue),
|
|
).toBeUndefined();
|
|
expect(recurrentNormaliser.scheduleResolver(punctualAd, Day.wed)).toBe(
|
|
'12:39',
|
|
);
|
|
expect(
|
|
recurrentNormaliser.scheduleResolver(punctualAd, Day.thu),
|
|
).toBeUndefined();
|
|
expect(
|
|
recurrentNormaliser.scheduleResolver(punctualAd, Day.fri),
|
|
).toBeUndefined();
|
|
expect(
|
|
recurrentNormaliser.scheduleResolver(punctualAd, Day.sat),
|
|
).toBeUndefined();
|
|
expect(
|
|
recurrentNormaliser.scheduleResolver(punctualAd, Day.sun),
|
|
).toBeUndefined();
|
|
});
|
|
it('should leave recurrent ad as is', () => {
|
|
const recurrentAd: CreateAdRequest = {
|
|
userUuid: '',
|
|
frequency: Frequency.RECURRENT,
|
|
schedule: {
|
|
mon: '08:30',
|
|
tue: '08:30',
|
|
wed: '09:00',
|
|
fri: '09:00',
|
|
},
|
|
addresses: [],
|
|
};
|
|
expect(recurrentNormaliser.fromDateResolver(recurrentAd)).toBe(
|
|
recurrentAd.departureDateTime,
|
|
);
|
|
expect(recurrentNormaliser.toDateResolver(recurrentAd)).toBe(
|
|
recurrentAd.departureDateTime,
|
|
);
|
|
expect(recurrentNormaliser.scheduleResolver(recurrentAd, Day.mon)).toBe(
|
|
recurrentAd.schedule.mon,
|
|
);
|
|
expect(recurrentNormaliser.scheduleResolver(recurrentAd, Day.tue)).toBe(
|
|
recurrentAd.schedule.tue,
|
|
);
|
|
expect(recurrentNormaliser.scheduleResolver(recurrentAd, Day.wed)).toBe(
|
|
recurrentAd.schedule.wed,
|
|
);
|
|
expect(recurrentNormaliser.scheduleResolver(recurrentAd, Day.thu)).toBe(
|
|
recurrentAd.schedule.thu,
|
|
);
|
|
expect(recurrentNormaliser.scheduleResolver(recurrentAd, Day.fri)).toBe(
|
|
recurrentAd.schedule.fri,
|
|
);
|
|
expect(recurrentNormaliser.scheduleResolver(recurrentAd, Day.sat)).toBe(
|
|
recurrentAd.schedule.sat,
|
|
);
|
|
expect(recurrentNormaliser.scheduleResolver(recurrentAd, Day.sun)).toBe(
|
|
recurrentAd.schedule.sun,
|
|
);
|
|
});
|
|
it('should pass for each day of the week of a deprarture ', () => {
|
|
const punctualAd: CreateAdRequest = {
|
|
userUuid: '',
|
|
frequency: Frequency.PUNCTUAL,
|
|
departureDateTime: undefined,
|
|
schedule: {} as ScheduleDTO,
|
|
addresses: [],
|
|
};
|
|
punctualAd.departureDateTime = new Date('05-01-2023 ');
|
|
expect(recurrentNormaliser.scheduleResolver(punctualAd, Day.mon)).toBe(
|
|
'00:00',
|
|
);
|
|
punctualAd.departureDateTime = new Date('05-02-2023 06:32:45');
|
|
expect(recurrentNormaliser.scheduleResolver(punctualAd, Day.tue)).toBe(
|
|
'06:32',
|
|
);
|
|
punctualAd.departureDateTime = new Date('05-03-2023 10:21');
|
|
expect(recurrentNormaliser.scheduleResolver(punctualAd, Day.wed)).toBe(
|
|
'10:21',
|
|
);
|
|
punctualAd.departureDateTime = new Date('05-04-2023 11:06:00');
|
|
expect(recurrentNormaliser.scheduleResolver(punctualAd, Day.thu)).toBe(
|
|
'11:06',
|
|
);
|
|
punctualAd.departureDateTime = new Date('05-05-2023 05:20');
|
|
expect(recurrentNormaliser.scheduleResolver(punctualAd, Day.fri)).toBe(
|
|
'05:20',
|
|
);
|
|
punctualAd.departureDateTime = new Date('05-06-2023');
|
|
expect(recurrentNormaliser.scheduleResolver(punctualAd, Day.sat)).toBe(
|
|
'00:00',
|
|
);
|
|
punctualAd.departureDateTime = new Date('05-07-2023');
|
|
expect(recurrentNormaliser.scheduleResolver(punctualAd, Day.sun)).toBe(
|
|
'00:00',
|
|
);
|
|
});
|
|
});
|