UNPKG

qe-fe-automation

Version:
103 lines (88 loc) 2.64 kB
import crypto = require('crypto'); import { GuestDetails, Passport } from '@support-user/index'; import { faker } from '@faker-js/faker'; import { TripTileType } from '@utility-lib/index'; function randomString(length = 6): string { return crypto.randomBytes(length).toString('hex'); } export function createGuestEmail(): string { return `guest_${randomString()}@guest.staging.tripactions.xyz`; } export function createName(length: number) { let result = ''; const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; const charactersLength = characters.length; for (let i = 0; i < length; i++) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); } return result; } function createPhoneNumber(): string { return faker.phone.phoneNumber('+43############'); } export function createPassport(): Passport { const issueDate = new Date(); issueDate.setFullYear(issueDate.getFullYear() - 2); const expireDate = new Date(); expireDate.setFullYear(issueDate.getFullYear() + 5); return { countryOfCitizenship: 'IL', countryOfIssue: 'IL', expiresOn: expireDate.toISOString().split('T')[0], issuedOn: issueDate.toISOString().split('T')[0], number: faker.phone.phoneNumber('###########') }; } export function createGuestUserRequest(guestDetails: GuestDetails) { const { age, email, gender, travelerType, passport } = guestDetails; let { familyName, givenName, phoneNumber } = guestDetails; const birthday = new Date(); birthday.setUTCFullYear(birthday.getUTCFullYear() - age); givenName = givenName || createName(8); familyName = familyName || createName(8); phoneNumber = phoneNumber || faker.phone.phoneNumber('+43############'); return { travelerType: travelerType.toUpperCase(), guestSignup: { givenName, familyName, phone: phoneNumber, email, passenger: { givenName, familyName, gender, contact: { phone: { number: phoneNumber, type: 'CELL' }, email }, birthdate: birthday.toISOString().split('T')[0], passport } } }; } export function createGuestDetails( age: number, gender: 'MALE' | 'FEMALE', travelerType: TripTileType ): GuestDetails { const email = createGuestEmail(); const givenName = createName(8); const familyName = createName(8); const phoneNumber = createPhoneNumber(); const passport = createPassport(); return { email, givenName, familyName, phoneNumber, age, gender, travelerType, passport }; }