import { LoginPage } from '@admin-lib/index';
import { User_Type } from '@support-onboard/index';
import {
  Hotels,
  HotelSearchResults,
  HotelCheckout,
  HotelInterceptApis
} from '@hotel-lib/index';
import { PaymentMethods, PaymentCheckout } from '../../../profile/lib';
import {
  cardNumber,
  paymentMethodData
} from '@fixtures/payment-method/payment-method-data';
import { LocationUtility } from '@utility-lib/location';
import { CommerceApiIntercepts } from '@commerce-shared-lib/api-intercepts';

describe('Commerce: Payment during Checkout page', () => {
  beforeEach(() => {
    LoginPage.createNewCompanyAndLoginWithUserByType({
      providers: [],
      users: [User_Type.TRAVELER]
    });
    CommerceApiIntercepts.interceptCommerceApis();
    HotelInterceptApis.interceptHotelApis();

    Hotels.visitHotelSearch();
    Hotels.setCheckInCheckOutDate();
    Hotels.selectHotelLocation(LocationUtility.getCityUS());
    Hotels.searchHotel();
    HotelSearchResults.selectPrepayHotel();
    HotelSearchResults.excludeProvidersFromRoomsList(['EXPEDIA']);
    HotelSearchResults.selectHotel(0);
    HotelSearchResults.selectPrepayRoomFilter();
    HotelSearchResults.selectRoomOption();
    HotelCheckout.waitToBeLoaded();
    HotelCheckout.setTripInfo();
    HotelCheckout.hotelCancellationAndChargePolicy();
    HotelCheckout.acceptHotelBookingPolicy();
    HotelCheckout.setPhoneNumber();
    HotelCheckout.checkIfProofOfVaccineRequired();

    PaymentCheckout.addCardInCheckout();
  });
  it(
    "C4581707: As a user, from check out page we shouldn't allow to add Airplus card ",
    { tags: ['@tier1'] },
    () => {
      PaymentCheckout.chooseTypeOfCard(1);

      // Add a company card
      PaymentMethods.enterNickname(paymentMethodData.nickname);
      PaymentMethods.enterFullName();
      PaymentMethods.enterCard(cardNumber.airplus);
      PaymentMethods.ShouldNotAddtheCard();
    }
  );
  it(
    "C4582581: As a user, from check out page we shouldn't allow to add UATP card ",
    { tags: ['@tier1'] },
    () => {
      PaymentCheckout.chooseTypeOfCard(1);

      // Add a company card
      PaymentMethods.enterNickname(paymentMethodData.nickname);
      PaymentMethods.enterFullName();
      PaymentMethods.enterCard(cardNumber.UATP);
      PaymentMethods.ShouldNotAddtheCard();
    }
  );
});
