qe-fe-automation
Version:
FE test automation framework using cypress
87 lines (76 loc) • 2.4 kB
text/typescript
import { faker } from '@faker-js/faker';
import { buildRailForEmployee } from '@fixtures/navan_pro/reed_mackay_booking/rail_data';
import { Employee } from '@fixtures/navan_pro/reed_mackay_booking/common';
import { buildHotelForEmployee } from '@fixtures/navan_pro/reed_mackay_booking/hotel_data';
import { buildCarForEmployee } from '@fixtures/navan_pro/reed_mackay_booking/car_data';
import { buildFlightForEmployee } from '@fixtures/navan_pro/reed_mackay_booking/flight_data';
import { buildBlackCarForEmployee } from '@fixtures/navan_pro/reed_mackay_booking/black_car_data';
function buildBaseTrip() {
return {
tripName: `Trip to ${faker.address.city()}`,
source: 'REED_MACKAY'
};
}
export function buildRailTripForEmployee(employee: Employee) {
return {
...buildBaseTrip(),
rails: [buildRailForEmployee(employee)]
};
}
export function buildHotelTripForEmployee(employee: Employee) {
return {
...buildBaseTrip(),
hotels: [buildHotelForEmployee(employee)]
};
}
export function buildCarTripForEmployee(employee: Employee) {
return {
...buildBaseTrip(),
cars: [buildCarForEmployee(employee)]
};
}
export function buildFlightTripForEmployee(employee: Employee) {
return {
...buildBaseTrip(),
flights: [buildFlightForEmployee(employee)]
};
}
export function buildBlackCarTripForEmployee(employee: Employee) {
return {
...buildBaseTrip(),
blackCars: [buildBlackCarForEmployee(employee)]
};
}
enum Vertical {
flight,
rail,
hotel,
blackCar,
car
}
export function buildMultipleVerticalsTripForEmployee(
employee: Employee,
verticals: Vertical[] = [Vertical.flight, Vertical.hotel]
) {
return {
...buildBaseTrip(),
...verticals.reduce((accum, vertical) => {
accum = { ...accum, ...buildVerticalFieldForEmployee(vertical, employee) };
return accum;
}, {})
};
}
function buildVerticalFieldForEmployee(vertical: Vertical, employee: Employee) {
switch (vertical) {
case Vertical.blackCar:
return { blackCars: buildBlackCarForEmployee(employee) };
case Vertical.car:
return { cars: buildCarForEmployee(employee) };
case Vertical.rail:
return { rails: buildRailForEmployee(employee) };
case Vertical.hotel:
return { hotels: buildHotelForEmployee(employee) };
case Vertical.flight:
return { flights: buildFlightForEmployee(employee) };
}
}