import { Utility } from '@utility-lib/index';
import { PaymentMethods } from '../../../profile/lib';
import {
  paymentMethodData,
  cardNumber
} from '@fixtures/payment-method/payment-method-data';
import { LoginPage } from '@admin-lib/index';
import { User_Type } from '@support-onboard/index';
import { CommerceApiIntercepts } from '@commerce-shared-lib/api-intercepts';

describe('Commerce: Profile- New Payment method form', () => {
  beforeEach(() => {
    CommerceApiIntercepts.interceptCommerceApis();
    LoginPage.createNewCompanyAndLoginWithUserByType({ users: [User_Type.TRAVELER] });
    Utility.visitSearchPage();
    PaymentMethods.visitPage();
  });

  it(
    'C422825 C422824 C689666: Should be able to add, edit, and delete a personal card',
    { tags: ['@tier1'] },
    () => {
      // Add a Personal card
      PaymentMethods.clickAddCard('addpersonalCardButton');
      PaymentMethods.enterNickname(paymentMethodData.nickname);
      PaymentMethods.enterFullName();
      PaymentMethods.enterPaymentMethodInfo();
      PaymentMethods.clickOnSavePayment();
      PaymentMethods.checkIfCardShould('be.visible', 0, paymentMethodData.nickname);

      // Edit a Personal card
      PaymentMethods.clickEditPaymentMethodInfo(0);
      PaymentMethods.enterNickname(paymentMethodData.creditCard.familyName);
      PaymentMethods.clickOnSavePayment();
      PaymentMethods.checkIfCardShould(
        'be.visible',
        0,
        paymentMethodData.creditCard.familyName
      );

      // Delete a Personal card
      PaymentMethods.deletePaymentMethod(0);
      PaymentMethods.checkIfCardShould(
        'not.exist',
        0,
        paymentMethodData.creditCard.familyName
      );
    }
  );
  it(
    "C4581295: As a user, from profile page we shouldn't allow to add UATP Airplus card",
    { tags: ['@tier1'] },
    () => {
      PaymentMethods.clickAddCard('addpersonalCardButton');
      PaymentMethods.enterNickname(paymentMethodData.nickname);
      PaymentMethods.enterFullName();
      PaymentMethods.enterCard(cardNumber.airplus);
      PaymentMethods.ShouldNotAddtheCard();
    }
  );
  it(
    "C4582581: As a user, from profile page we shouldn't allow to add UATP card",
    { tags: ['@tier1'] },
    () => {
      PaymentMethods.clickAddCard('addpersonalCardButton');
      PaymentMethods.enterNickname(paymentMethodData.nickname);
      PaymentMethods.enterFullName();
      PaymentMethods.enterCard(cardNumber.UATP);
      PaymentMethods.ShouldNotAddtheCard();
    }
  );
});
