import { FlightBookingParams, FlightBookingUtility } from '@flight-modal/index';
import { FlightTripType } from '@flight-lib/search';
import { LocationUtility } from '@utility-lib/location';
import { BookingUtility } from '@chat-lib/booking-model';
import { ChatBox, ChatBooking, FlightBookingData } from '@chat-lib/index';
import { Directions } from '@chat-lib/booking';
import { Timeouts } from '@utility-lib/constants';

describe('Chat: Flight change booking', () => {
  it.skip(
    'C7838200: Flight change booking via chat with Ava',
    { tags: ['@tier2'] },
    () => {
      const flightBookingParams: FlightBookingParams =
        FlightBookingUtility.initFlightBookingParams({
          locations:
            LocationUtility.getPairOfOriginAndDestinationAirportsUSWithShortName(),
          flightTripType: FlightTripType.ROUNDTRIP,
          tripTileType: 'Business'
        });

      const flightBookingData: FlightBookingData = {
        flightBookingParams: flightBookingParams,
        departingFrom: Directions.FROM,
        arrivingAt: Directions.TO,
        isChangeFlight: false
      };
      const daysToMove = { daysToMove: 9, daysAfterMovedDays: 2 };

      const flightBookingParams_change: FlightBookingParams =
        FlightBookingUtility.initFlightBookingParams({
          locations:
            LocationUtility.getPairOfOriginAndDestinationAirportsUSWithShortName(),
          flightTripType: FlightTripType.ROUNDTRIP,
          tripTileType: 'Business'
        });

      BookingUtility.createFlightBookingAndClearSession(flightBookingData, daysToMove);
      cy.wait(Timeouts.MEDIUM_TIMEOUT_60_SEC.timeout); //waiting for auto-ticketing
      ChatBox.needHelpByChat();
      ChatBox.readAvaMsgAndSelectReply(
        'Would you like me to connect you with an agent?',
        'No'
      );
      ChatBox.replyToAva('Upcoming trips');
      ChatBox.replyToAva('Change');
      ChatBox.replyToAva('Both flights');
      ChatBooking.changeFlight(flightBookingParams_change);
      ChatBooking.changeFlightOptions('Search');
      ChatBox.expectMsgReceivedFromAva(
        `All set! I've changed this booking. If you refresh your trip page you will see the updated booking.`
      );
      ChatBox.selectMsgYouWannaSendBackToAva('done');
    }
  );
});
