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 trainVoid = localizationData.train.train_void;
const trainBooking = localizationData.train.train_booking;
const indiaTDS = localizationData.india_Tds;
const refundTrain = localizationData.train.train_refund;
const bookingUuid = refundTrain.bookingUuID;
const tripUrl = refundTrain.trip_url;
const refundTicketType = indiaTDS.transactionType.refund;
const ticketNumber = refundTrain.ticketNumber;
const providerType = trainBooking.providerType.trainLine;
const inventoryType = trainBooking.inventoryType;
const metaData = trainVoid.metadata;
const bookingID = refundTrain.bookingID;
const baseAmount = english.baseAmount;
const ticketType = english.ticket;

describe('Commerce: Rail | Refund | Invoice |  Validations', () => {
  it('C210215: Flight Refund Invoice Validation', { tags: ['@tier1'] }, () => {
    cy.clearAllByBookingUuid(bookingUuid);
    cy.archiveByBookingUUID(bookingUuid);
    cy.insertTransactionInLedger(
      bookingUuid,
      bookingID,
      baseAmount,
      [],
      ticketType,
      ticketNumber,
      providerType,
      inventoryType,
      metaData,
      'USD',
      null
    );
    cy.forceSyncAPI(bookingUuid);
    cy.forcePDFSyncAPI(bookingUuid);
    cy.insertTransactionInLedger(
      bookingUuid,
      bookingID,
      baseAmount,
      [],
      refundTicketType,
      ticketNumber,
      providerType,
      inventoryType,
      metaData,
      'USD',
      null
    );
    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.validateRailRefundInvoiceDetails();
    Invoice.deleteFileFromFolderByBookingId(bookingID);
  });
});
