import { FlightBookingUtility } from '@flight-modal/index';
import { FlightsInvoiceValidation } from '@commerce-lib/flights/invoice_validation';
import { FlightTripType, FlightInterceptApis } from '@flight-lib/index';
import { TripTileType } from '@utility-lib/index';
import { LoginPage } from '@admin-lib/index';
import { Provider_Type, User_Type } from '@support-onboard/index';
import { ItineraryValidation } from '@commerce-lib/trains/invoice_validations';
import { Emea_Fee_Types } from '@support-commerce/data_model/fee_types';
import { CommerceApiIntercepts } from '@commerce-shared-lib/api-intercepts';

const tripType: FlightTripType = FlightTripType.ONEWAY;
const tripTileType: TripTileType = 'Personal';

describe('Commerce: FLIGHT | PERSONAL | USD | SABRE | ONEWAY flight Booking', () => {
  beforeEach(() => {
    LoginPage.createNewCompanyAndLoginWithUserByType({
      providers: [Provider_Type.NDC_EXCHANGE_FLIGHT],
      users: [User_Type.TRAVELER],
      feeModelInfo: Emea_Fee_Types.EMEA_FEE_MODEL_A_USD_N
    });
    CommerceApiIntercepts.interceptCommerceApis();
    FlightInterceptApis.interceptFlightsApis();
  });

  it(
    'C1376143: should be able to book personal one way flight',
    { tags: ['@tier2'] },
    () => {
      FlightBookingUtility.runBookingFlow(
        FlightBookingUtility.initFlightBookingParams({
          locations: ['DAL  Dallas', 'SAT  San Antonio'],
          flightTripType: tripType,
          tripTileType: tripTileType,
          continueIfNoResultFound: false
        })
      );
      ItineraryValidation.visitTripsPage('bookings');
      ItineraryValidation.selectFirstTrip();
      FlightsInvoiceValidation.storeFlightTripItineraryTripData();
      FlightsInvoiceValidation.clickAndDownloadInvoice();
      FlightsInvoiceValidation.checkInvoiceBookingId();
      FlightsInvoiceValidation.checkInvoiceTAFeeDoesNotExist();
    }
  );
});
