import { CertificationLevelEnum } from '../src/enums/certification-level.enum'; import { IsPhotoRequiredEnum } from '../src/enums/is-photo-required.enum'; import { TicketDto } from '../src/interfaces/ticket/ticket.dto'; import { IsPhotoRequired } from '../src/rules/ticket/is-photo-required'; import { TICKET_UNITAIRE_MULHOUSE, VALIDATION_INPUT } from './test-config'; describe('Photo is required', () => { const rule = new IsPhotoRequired(); it('Valid Ticket, with a isPhotoRequired as NO', () => { expect(rule.validate(TICKET_UNITAIRE_MULHOUSE as unknown as TicketDto)).toBe(true); }); it('Valid Ticket, with a isPhotoRequired as VALID and profilePhotoCertification as exists', () => { const ticketPassengerWithPhoto = { ...TICKET_UNITAIRE_MULHOUSE, isPhotoRequired: 'NO' as IsPhotoRequiredEnum, passengers: [{ profilePhotoCertification: CertificationLevelEnum.EXISTS }], } as unknown as TicketDto; expect(rule.validate(ticketPassengerWithPhoto)).toBe(true); }); it('Valid Ticket, with a isPhotoRequired as VALID and profilePhotoCertification as null', () => { const ticketPassengerWithPhoto = { ...TICKET_UNITAIRE_MULHOUSE, isPhotoRequired: 'NO' as IsPhotoRequiredEnum, passengers: [{ profilePhotoCertification: null }], } as unknown as TicketDto; expect(rule.validate(ticketPassengerWithPhoto)).toBe(true); }); it('Invalid ticket, with a isPhotoRequired as VALIDATE and profilePhotoCertification as null', () => { const ticketPassengerWithNotPhoto = { ...TICKET_UNITAIRE_MULHOUSE, isPhotoRequired: 'VALIDATE' as IsPhotoRequiredEnum, passengers: [{ profilePhotoCertification: null }], } as unknown as TicketDto; expect(rule.validate(ticketPassengerWithNotPhoto)).toBe(false); }); it('Valid ticket, with a isPhotoRequired as VALIDATE and profilePhotoCertification as exists', () => { const ticketPassengerWithNotPhoto = { ...TICKET_UNITAIRE_MULHOUSE, isPhotoRequired: 'VALIDATE' as IsPhotoRequiredEnum, passengers: [{ profilePhotoCertification: CertificationLevelEnum.EXISTS }], } as unknown as TicketDto; expect(rule.validate(ticketPassengerWithNotPhoto)).toBe(true); }); it('Valid ticket, with a isPhotoRequired as VALIDATE and profilePhotoCertification as certified', () => { const ticketPassengerWithNotPhoto = { ...TICKET_UNITAIRE_MULHOUSE, isPhotoRequired: 'VALIDATE' as IsPhotoRequiredEnum, passengers: [{ profilePhotoCertification: CertificationLevelEnum.CERTIFIED }], } as unknown as TicketDto; expect(rule.validate(ticketPassengerWithNotPhoto)).toBe(true); }); it('Invalid ticket, with a isPhotoRequired as CERTIFIED and profilePhotoCertification as null', () => { const ticketPassengerWithNotPhoto = { ...TICKET_UNITAIRE_MULHOUSE, isPhotoRequired: 'CERTIFIED' as IsPhotoRequiredEnum, passengers: [{ profilePhotoCertification: null }], } as unknown as TicketDto; expect(rule.validate(ticketPassengerWithNotPhoto)).toBe(false); }); it('Invalid ticket, with a isPhotoRequired as CERTIFIED and profilePhotoCertification as exists', () => { const ticketPassengerWithNotPhoto = { ...TICKET_UNITAIRE_MULHOUSE, isPhotoRequired: 'CERTIFIED' as IsPhotoRequiredEnum, passengers: [{ profilePhotoCertification: CertificationLevelEnum.EXISTS }], } as unknown as TicketDto; expect(rule.validate(ticketPassengerWithNotPhoto)).toBe(false); }); it('Valid ticket, with a isPhotoRequired as CERTIFIED and profilePhotoCertification as certified', () => { const ticketPassengerWithNotPhoto = { ...TICKET_UNITAIRE_MULHOUSE, isPhotoRequired: 'CERTIFIED' as IsPhotoRequiredEnum, passengers: [{ profilePhotoCertification: CertificationLevelEnum.CERTIFIED }], } as unknown as TicketDto; expect(rule.validate(ticketPassengerWithNotPhoto)).toBe(true); }); it('Invalid ticket, with a isPhotoRequired as VALID and no passenger', () => { const ticketPassengerWithNotPassengers = { ...TICKET_UNITAIRE_MULHOUSE, isPhotoRequired: 'VALIDATE' as IsPhotoRequiredEnum, passengers: [], } as unknown as TicketDto; expect(rule.validate(ticketPassengerWithNotPassengers)).toBe(false); }); });