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 bookingUuid = english.flightBookingUuid;
const tripUrl = english.usBookingTripURL;
const bookingID = english.bookingID;
const baseAmount = english.baseAmount;
const totalAmount = english.totalAmount;
const totalTaxAmount = english.totalTaxAmount;
const ticketType = english.ticket;
const ticketNumber = '0167990736959';
const providerType = english.sabre;
const inventoryType = english.flight;
const coupons = flightVoid.sabre_us_coupons;

describe('Commerce: FLIGHT | Booking | Invoice | TripFee | US | Validations', () => {
  it(
    'C1376137: should be able to book business one way flight',
    { tags: ['@tier1'] },
    () => {
      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.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();
      // Invoice.invoiceBaseAmountValidation();
      // FlightsInvoiceValidation.validateFlightInvoiceDetails();
      Invoice.deleteFileFromFolderByBookingId(bookingID);
    }
  );
});
