import { AdminPayment, LoginPage } from '@admin-lib/index';
import { PaymentMethods, PaymentCheckout } from '@profile-lib/index';
import { paymentMethodData } from '@fixtures/payment-method/payment-method-data';
import { CommerceApiIntercepts } from '@commerce-lib/api-intercepts';
import { stagingUsers } from '@fixtures/staging-users';
import { OnboardingGuide } from '@growth-lib/onboarding-guide';
import { GrowthInterceptApis } from '@growth-lib/api-intercept';
import { UtilityIntercept } from '@utility-lib/api-intercept';
import { HotelInterceptApis } from '@hotel-lib/api-intercept';
import { hotelBooking } from '@hotel-lib/search_model';
const travelPlannerPassword = Cypress.env('newUser')?.NEW_USER_PASSWORD;

describe('Commerce: Save company card during Checkout page', () => {
  beforeEach(() => {
    const { payment_method_user } = stagingUsers;
    LoginPage.clearExistingLoginSession();
    LoginPage.visitTALoginPage();
    LoginPage.loginWithCredentials(
      payment_method_user.email,
      travelPlannerPassword,
      'legacy'
    );
    GrowthInterceptApis.interceptApis();
    CommerceApiIntercepts.interceptCommerceApis();
    UtilityIntercept.interceptBaseApis();
    HotelInterceptApis.interceptHotelApis();

    OnboardingGuide.verifyOnboardingGuideOpen();
    OnboardingGuide.closeOnboardingGuide();
  });

  it.skip(
    'C667103: Should not be able to SAVE personal card on checkout',
    { tags: ['@tier1'] },
    () => {
      hotelBooking('Business', false);
      PaymentCheckout.addCardInCheckout();

      PaymentCheckout.chooseTypeOfCard(0);
      PaymentMethods.verifyIsSaveCardToggleOnCorrectMode(false);
      PaymentCheckout.chooseTypeOfCard(1);
      PaymentMethods.verifyIsSaveCardToggleOnCorrectMode(true);
      // Add a company card
      PaymentMethods.enterNickname(paymentMethodData.nickname);
      PaymentMethods.enterFullName();
      PaymentMethods.enterPaymentMethodInfo();

      PaymentMethods.clickOnSaveCardToggle();
      PaymentMethods.chooseAvailableForGuest(true);

      PaymentMethods.clickOnSavePayment();

      PaymentCheckout.checkIfCardIsSelected(paymentMethodData.nickname);
      PaymentCheckout.checkIfCardIsInList(paymentMethodData.nickname);

      AdminPayment.visitPage();
      AdminPayment.checkNewCardName(paymentMethodData.nickname);

      AdminPayment.deleteCard(paymentMethodData.nickname);
    }
  );
});
