import { TicketDto } from '../src/interfaces/ticket/ticket.dto'; import { ValidDate } from '../src/rules/ticket/valid-date'; import { TICKET_UNITAIRE_MULHOUSE } from './test-config'; describe('Valid Date', () => { const rule = new ValidDate(); beforeAll(async () => { jest .spyOn(global.Date, 'now') .mockImplementation(() => new Date('2022-09-30 16:30:00').valueOf()); }); it('Validates the ticket date', () => { const ticketValidDates = { ...TICKET_UNITAIRE_MULHOUSE, dateFrom: new Date('2022-09-30 16:00:00'), dateUntil: new Date('2022-09-30 17:00:00'), }; expect(rule.validate(ticketValidDates as unknown as TicketDto)).toBe(true); }); it('Invalidates the ticket date (too early)', () => { const ticketInvalidDates = { ...TICKET_UNITAIRE_MULHOUSE, dateFrom: new Date('2022-09-30 14:30:00'), dateUntil: new Date('2022-09-30 15:30:00'), }; expect(rule.validate(ticketInvalidDates as unknown as TicketDto)).toBe(false); }); it('Invalidates the ticket date (too late)', () => { const ticketInvalidDates = { ...TICKET_UNITAIRE_MULHOUSE, dateFrom: new Date('2022-09-30 17:30:00'), dateUntil: new Date('2022-09-30 18:30:00'), }; expect(rule.validate(ticketInvalidDates as unknown as TicketDto)).toBe(false); }); it('Invalidates the ticket date (mixed up dates)', () => { const ticketInvalidDates = { ...TICKET_UNITAIRE_MULHOUSE, dateFrom: new Date('2022-09-30 17:30:00'), dateUntil: new Date('2022-09-30 15:30:00'), }; expect(rule.validate(ticketInvalidDates as unknown as TicketDto)).toBe(false); }); });