import { LoginPage } from '@admin-lib/index';
import { FlightTripType, FlightInterceptApis } from '@flight-lib/index';
import { LocationUtility, Utility, Timeouts } from '@utility-lib/index';
import { GuestDetails } from '@support-user/index';
import { Provider_Type, User_Type } from '@support-onboard/index';
import { FlightBookingUtility, FlightUtility } from '@flight-modal/index';

const newUserCredentials = Cypress.env('newUser').NEW_USER_PASSWORD;

describe('Flight: Round trip flight', () => {
  let userEmail: string;
  beforeEach(() => {
    LoginPage.createNewCompanyAndLoginWithUserByType({
      providers: [Provider_Type.MOCK_FLIGHT],
      users: [User_Type.ADMIN],
      locale: 'de-DE'
    });
    cy.task('getDataFromCache', 'userEmail').then((email: any) => {
      userEmail = email;
    });
    LoginPage.clearExistingLoginSession();
    FlightInterceptApis.interceptFlightsApis();
  });

  it('C353584: Book flight - roundtrip - localized', { tags: ['@tier1'] }, () => {
    Utility.changeBrowserLanguageTo('de');
    LoginPage.visitTALoginPage('Willkommen bei');

    console.log('user: ' + userEmail);
    LoginPage.loginWithCredentials(userEmail, newUserCredentials);
    cy.wait(Timeouts.SHORT_TIMEOUT_5_SEC.timeout);
    bookRoundTrip();
  });

  const bookRoundTrip = (guests: GuestDetails[] = []) => {
    cy.reload(true);
    const flightParams = FlightBookingUtility.initFlightBookingParams({
      flightTripType: FlightTripType.ROUNDTRIP,
      locations: LocationUtility.getRandomAcrossUnitedStatesAirports(),
      checkInType: ' Continue without EarlyBird Check-In® ',
      flightConfirmText: 'Flug bestätigt',
      checkOutConfirmText: 'Hin- und Rückreise',
      guests: guests
    });
    FlightUtility.runSearchFlow(flightParams);
    FlightUtility.runChooseMockRoundtripResultFlow();
    FlightUtility.runCheckoutFlow(flightParams);
    FlightUtility.runItineraryFlow();
  };
});
