import { stagingUsers } from '@fixtures/staging-users';
import { Invoice } from '@commerce-lib/invoice/invoice';
import { FlightsInvoiceValidation } from '@commerce-lib/flights/invoice_validation';
import { localizationData } from '@fixtures/commerce/localization_data';

const userCreds = Cypress.env('newUser').NEW_USER_PASSWORD;
const { us_domestic_sabre_user } = stagingUsers;
const english = localizationData.english;
const flightVoid = localizationData.flight.flight_void;
const flightAncilliaries = localizationData.flight.flight_ancilliaries;
const indiaTDS = localizationData.india_Tds;
const bookingUuid = flightAncilliaries.bookingUuID;
const tripUrl = flightAncilliaries.trip_url;
const bookingID = flightAncilliaries.bookingID;
const baseAmount = english.baseAmount;
const totalAmount = english.totalAmount;
const totalTaxAmount = english.totalTaxAmount;
const ticketType = english.ticket;
const ticketNumber = '0063440061863';
const providerType = flightVoid.providerType.fareLogix;
const inventoryType = flightVoid.inventoryType.flight;
const baggageTicketType = indiaTDS.transactionType.baggage;
const seatTicketType = indiaTDS.transactionType.seat_upgrade;
const seat_collected_amount = flightAncilliaries.seat_collected_amount;
const baggage_collected_amount = flightAncilliaries.baggage_collected_amount;
const baggage_ticketNumber = flightAncilliaries.baggage_ticketNumber;
const seat_ticketNumber = flightAncilliaries.seat_ticketNumber;
const coupons = flightVoid.sabre_us_coupons;

describe('Commerce: FLIGHT | Seat_upgrade | Baggage | Invoice |  Validations', () => {
  it('C9742370: Flight Seat upgrade Invoice Validation', { tags: ['@tier2'] }, () => {
    cy.clearAllByBookingUuid(bookingUuid);
    cy.archiveByBookingUUID(bookingUuid);
    cy.insertBookingDataInLedger(
      bookingUuid,
      bookingID,
      totalAmount,
      baseAmount,
      totalTaxAmount,
      ticketType,
      ticketNumber,
      providerType,
      inventoryType,
      null,
      null,
      coupons
    );
    cy.forceSyncAPI(bookingUuid);
    cy.forcePDFSyncAPI(bookingUuid);
    cy.insertBookingDataInLedger(
      bookingUuid,
      bookingID,
      seat_collected_amount,
      seat_collected_amount,
      0,
      seatTicketType,
      seat_ticketNumber,
      providerType,
      inventoryType,
      seat_collected_amount,
      null,
      coupons
    );
    cy.forceSyncAPI(bookingUuid);
    cy.forcePDFSyncAPI(bookingUuid);
    cy.insertBookingDataInLedger(
      bookingUuid,
      bookingID,
      baggage_collected_amount,
      baggage_collected_amount,
      0,
      baggageTicketType,
      baggage_ticketNumber,
      providerType,
      inventoryType,
      baggage_collected_amount,
      null,
      coupons
    );
    cy.forceSyncAPI(bookingUuid);
    cy.forcePDFSyncAPI(bookingUuid);
    cy.getLedgerData(bookingUuid);
    cy.loginWithAuthToken({
      email: us_domestic_sabre_user.email,
      password: userCreds,
      isSA: true
    });
    FlightsInvoiceValidation.visitItineraryPage(tripUrl);
    FlightsInvoiceValidation.visitViewTripFeePage();
    Invoice.retrieveDownloadInvoiceFileWithBookingID(bookingID);
    Invoice.retrieveAndConvertPDFInvoiceDetailsToHTML();
    Invoice.invoiceTotalAmountValidation();
    FlightsInvoiceValidation.validateFlightAncilliaryInvoiceDetails();
    Invoice.deleteFileFromFolderByBookingId(bookingID);
  });
});
