import { ALL } from '../src/constants/profiles-must-have'; import { TicketDto } from '../src/interfaces/ticket/ticket.dto'; import { UserProfiles } from '../src/rules/ticket/user-profiles'; import { TICKET_UNITAIRE_MULHOUSE } from './test-config'; describe('User profiles', () => { const rule = new UserProfiles(); beforeAll(async () => { jest .spyOn(global.Date, 'now') .mockImplementation(() => new Date('2022-09-30 16:30:00').valueOf()); }); it('1.1 profile (all) SUCCESS - no profiles required', () => { expect( rule.validate({ ...TICKET_UNITAIRE_MULHOUSE, profiles: null, passengers: [{ profiles: ['mulhouse:-26ans'] }], //14 today profilesMustHave: ALL, } as unknown as TicketDto), ).toBe(true); }); it('1.2 profile (all) SUCCESS - all profiles required', () => { expect( rule.validate({ ...TICKET_UNITAIRE_MULHOUSE, profiles: ['profile-1', 'profile-2', 'profile-3'], passengers: [{ profiles: ['profile-1', 'profile-3', 'profile-2'] }], //14 today profilesMustHave: ALL, } as unknown as TicketDto), ).toBe(true); }); it('1.3 profile (all) SUCCESS - all profiles required', () => { expect( rule.validate({ ...TICKET_UNITAIRE_MULHOUSE, profiles: ['profile-1', 'profile-3'], passengers: [{ profiles: ['profile-1', 'profile-3', 'profile-2'] }], //14 today profilesMustHave: ALL, } as unknown as TicketDto), ).toBe(true); }); it('1.4 profile (all) FAIL - all profiles required', () => { expect( rule.validate({ ...TICKET_UNITAIRE_MULHOUSE, profiles: ['profile-1', 'profile-2', 'profile-3'], passengers: [{ profiles: ['profile-1', 'profile-3'] }], //14 today profilesMustHave: ALL, } as unknown as TicketDto), ).toBe(false); }); it('2.1 profile (one) SUCCESS - one profile are required', () => { expect( rule.validate({ ...TICKET_UNITAIRE_MULHOUSE, profiles: ['profile-1', 'profile-2', 'profile-3'], passengers: [{ profiles: ['profile-1', 'profile-3'] }], //14 today profilesMustHave: 'one', } as unknown as TicketDto), ).toBe(true); }); it('2.2 profile (one) FAIL - one profile are required', () => { expect( rule.validate({ ...TICKET_UNITAIRE_MULHOUSE, profiles: ['profile-1', 'profile-2'], passengers: [{ profiles: ['profile-3'] }], //14 today profilesMustHave: 'one', } as unknown as TicketDto), ).toBe(false); }); });