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 { Checkout } from '../../lib';
import { Timeouts } from '@utility-lib/constants';

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();
    FlightUpgrade.runFlightBookingFlow(roundTripFlightBookingParams, 'Alaska Airlines');
  });

  it('C14014871: Verify only personal card is shown at checkout for flight upgrade', { tags: ['@tier2'] }, () => {
    cy.wait(Timeouts.MEDIUM_TIMEOUT_30_SEC.timeout);
    FlightItinerary.goToItineraryPage();
    FlightItinerary.waitToBeLoaded();
    FlightUpgrade.clickFlightUpgradeLink();
    FlightUpgrade.flightUpgradeModalVisible();
    FlightUpgrade.flightUpgradeOptionsAvailable();
    FlightUpgrade.clickSelectButton(' Select ');
    Checkout.verifyPaymentType();
  });

  it(
    'C14014872: Verify itinerary shows the correct flight class after successful upgrade',
    { tags: ['@tier2'] },
    () => {
      FlightUpgrade.runRoundTripFlightUpgradeFlow();
    }
  );
});
