qe-fe-automation
Version:
FE test automation framework using cypress
103 lines (88 loc) • 2.64 kB
text/typescript
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
};
}