import { TicketDto } from '../src/interfaces/ticket/ticket.dto'; import { DateRangeIsValid } from '../src/rules/ticket/date-range-is-valid'; import { TICKET_ABONNEMENT_MENSUEL_MOINS_26_ANS_OCTOBRE, TICKET_UNITAIRE_MULHOUSE, } from './test-config'; describe('Date range rule', () => { const dateRangeRule = new DateRangeIsValid(); beforeAll(() => { jest .spyOn(global.Date, 'now') .mockImplementation(() => new Date('2022-04-29 17:00:00').valueOf()); }); it('Ticket can be validate', () => { expect(dateRangeRule.validate(TICKET_UNITAIRE_MULHOUSE as unknown as TicketDto)).toBe(true); }); it("Ticket can't be validate", () => { const testTicket = { ...TICKET_UNITAIRE_MULHOUSE, validityDateFrom: '2021-01-01T00:00:00.000Z', validityDateUntil: '2022-01-01T00:00:00.000Z', }; expect(dateRangeRule.validate(testTicket as unknown as TicketDto)).toBe(false); }); it('Ticket in validity period, but outside of validation period', () => { const testTicket = { ...TICKET_UNITAIRE_MULHOUSE, validityDateFrom: '2022-01-01T00:00:00.000Z', validityDateUntil: '2023-01-01T00:00:00.000Z', validationDateFrom: '2022-01-01T00:00:00.000Z', validationDateUntil: '2022-04-01T00:00:00.000Z', }; expect(dateRangeRule.validate(testTicket as unknown as TicketDto)).toBe(false); }); it('Ticket with "old" parameters, can\'t be handled', () => { expect( dateRangeRule.validate( TICKET_ABONNEMENT_MENSUEL_MOINS_26_ANS_OCTOBRE as unknown as TicketDto, ), ).toBe(true); }); afterAll(() => { jest.restoreAllMocks(); }); });