import { FlightBookingUtility } from '@flight-modal/index';
import { LoginPage } from '@admin-lib/login';
import { Provider_Type, User_Type } from '@support-onboard/index';
import { FlightInterceptApis, FlightItinerary, FlightTripType } from '@flight-lib/index';
import { FlightUpgrade } from '../../lib/flight_upgrade';
import { Timeouts } from '@utility-lib/constants';

const oneWayFlightBookingParams = FlightBookingUtility.initFlightBookingParams({
  locations: ['SJC', 'LAS'],
  flightTripType: FlightTripType.ONEWAY,
  tripTileType: 'Business',
  continueIfNoResultFound: true
});

const roundTripFlightBookingParams = FlightBookingUtility.initFlightBookingParams({
  locations: ['SJC', 'LAS'],
  flightTripType: FlightTripType.ROUNDTRIP,
  tripTileType: 'Business',
  continueIfNoResultFound: true
});
describe('Personal Travel: Flight upgrades from itinerary', () => {
  beforeEach(() => {
    LoginPage.createNewCompanyAndLoginWithUserByType({
      providers: [Provider_Type.SABRE_FLIGHT],
      users: [User_Type.ADMIN]
    });
    FlightInterceptApis.interceptFlightsApis();
  });

  it('C14014513: Verify flight upgrade flow for one way flights', { tags: ['@tier2'] }, () => {
    FlightUpgrade.runFlightBookingFlow(oneWayFlightBookingParams, 'Alaska Airlines');
    cy.wait(Timeouts.MEDIUM_TIMEOUT_30_SEC.timeout);
    FlightItinerary.goToItineraryPage();
    FlightItinerary.waitToBeLoaded();
    FlightUpgrade.clickFlightUpgradeLink();
    FlightUpgrade.clickSelectButton('Select');
    FlightUpgrade.clickAcknowledgeButton();
    FlightUpgrade.clickSelectButton(' Confirm upgrade ');
    FlightItinerary.goToItineraryPage();
    FlightItinerary.waitToBeLoaded();
    FlightUpgrade.reloadPage();
    FlightUpgrade.checkFlightClassAfterUpgrade(['First', 'Business'], 0);
  });

  it('C14014512: Verify flight upgrade flow for round trip flights', { tags: ['@tier2'] }, () => {
    FlightUpgrade.runFlightBookingFlow(roundTripFlightBookingParams, 'Alaska Airlines');
    FlightUpgrade.runRoundTripFlightUpgradeFlow();
  });
});
