UNPKG

qe-fe-automation

Version:
87 lines (76 loc) 2.4 kB
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) }; } }