import {
  FakeProviderStations,
  JourneyType,
  TrainCheckout,
  TrainSearch,
  TrainSearchResults
} from '@train-lib/index';
import { TripTileType, Timeouts } from '@utility-lib/index';

export class FakeProviderBookingUtility {
  static bookRoundTrip(tripTileType: TripTileType) {
    TrainSearch.visitTrainSearch(tripTileType);
    TrainSearch.setOrigin(FakeProviderStations.DepartureStation);
    TrainSearch.setDestination(FakeProviderStations.DestinationStation);
    TrainSearch.selectJourneyType(JourneyType.ROUND_TRIP);
    TrainSearch.selectFutureTrainDate();
    TrainSearch.searchTrain();
    TrainSearchResults.expectSearchResultPresent();
    TrainSearchResults.selectReturn();
    cy.wait(Timeouts.SHORT_TIMEOUT_5_SEC.timeout);
    TrainSearchResults.proceedToCheckoutPage();
    if (tripTileType === 'Business') {
      TrainCheckout.setTripInfo();
    }
    TrainCheckout.acceptAcknowledgement();
    TrainCheckout.storeBookingData();
    TrainCheckout.bookTrain();
    TrainCheckout.confirmBooking();
  }
}
