import { TicketState } from '../src/enums/ticket-state'; import { TicketDto } from '../src/interfaces/ticket/ticket.dto'; import { getTicketState } from '../src/utils/state'; import { TICKET_ABO_MENSUEL_26_64_ANS, TICKET_UNITAIRE_MULHOUSE, VALIDATION_STATE_VALID, } from './test-config'; describe.skip('TicketDto State', () => { beforeAll(async () => { jest .spyOn(global.Date, 'now') .mockImplementation(() => new Date('2022-09-30 16:30:00').valueOf()); }); it('STATE | uncomposted', () => { const ticketUncomposted = { ...TICKET_UNITAIRE_MULHOUSE, firstValidation: null, lastValidation: null, nbValidations: 0, dateFrom: new Date('2022-09-30 16:00:00'), dateUntil: null, }; expect(getTicketState(ticketUncomposted as unknown as TicketDto)).toBe(TicketState.UNCOMPOSTED); }); it('STATE | invalid', () => { const ticketInvalid = { ...TICKET_UNITAIRE_MULHOUSE, enabled: false, dateFrom: new Date('2022-09-30 16:00:00'), dateUntil: null, }; expect(getTicketState(ticketInvalid as unknown as TicketDto)).toBe(TicketState.INVALID); }); it('STATE | under-Validation', () => { const firstValidation = { ...VALIDATION_STATE_VALID, createdAt: new Date('2022-09-30 16:30:00'), validUntil: new Date('2022-09-30 17:30:00'), }; const ticketUnderValidation = { ...TICKET_UNITAIRE_MULHOUSE, firstValidation, lastValidation: firstValidation, lastValidValidation: firstValidation, dateFrom: new Date('2022-09-30 16:00:00'), dateUntil: new Date('2022-09-30 17:30:00'), }; expect(getTicketState(ticketUnderValidation as unknown as TicketDto)).toBe( TicketState.UNDER_VALIDATION, ); }); it('STATE | completed', () => { const ticketCompleted = { ...TICKET_UNITAIRE_MULHOUSE, dateFrom: new Date('2022-09-30 14:00:00'), dateUntil: new Date('2022-09-30 16:29:00'), }; expect(getTicketState(ticketCompleted as unknown as TicketDto)).toBe(TicketState.COMPLETED); }); it('STATE | coming-soon', () => { const ticketComingSoon = { ...TICKET_UNITAIRE_MULHOUSE, dateFrom: new Date('2022-09-30 18:00:00'), enabled: false, }; expect(getTicketState(ticketComingSoon as unknown as TicketDto)).toBe(TicketState.COMING_SOON); }); it('STATE | coming-soon (#2)', () => { const ticketComingSoon = { ...TICKET_UNITAIRE_MULHOUSE, dateFrom: new Date('2022-10-30 16:20:00'), enabled: false, }; const state = getTicketState(ticketComingSoon as unknown as TicketDto); expect(state).toBe(TicketState.COMING_SOON); }); it('STATE | under-validation, one hour ticket', () => { const firstValidation = { ...VALIDATION_STATE_VALID, createdAt: new Date('2022-09-30 16:20:00'), validUntil: new Date('2022-09-30 17:20:00'), }; const ticketUnderValidation = { ...TICKET_UNITAIRE_MULHOUSE, dateFrom: new Date('2022-09-30 16:20:00'), dateUntil: new Date('2022-09-30 17:20:00'), nbValidations: 1, firstValidation: firstValidation, lastValidation: firstValidation, lastValidValidation: firstValidation, }; expect(getTicketState(ticketUnderValidation as unknown as TicketDto)).toBe( TicketState.UNDER_VALIDATION, ); }); it('STATE | under-validation, monthly subscription', () => { const ticketUnderValidation2 = { ...TICKET_ABO_MENSUEL_26_64_ANS, dateFrom: new Date('2022-09-01 00:00:00'), dateUntil: new Date('2022-09-30 23:59:00'), firstValidation: VALIDATION_STATE_VALID, lastValidation: VALIDATION_STATE_VALID, lastValidValidation: VALIDATION_STATE_VALID, }; expect(getTicketState(ticketUnderValidation2 as unknown as TicketDto)).toBe( TicketState.UNDER_VALIDATION, ); }); });