import { GrowthInterceptApis, LoginSelfSell, OnboardingGuide, SignUp } from '@growth-lib/index';
import { GrowthUtilities } from '@growth-lib/growth-utilities';
import { AddUser } from '@growth-lib/add-user';
import { CreateAccountPage } from '@onboarding-lib/signup/create_account';
import { signupUserData } from '@fixtures/signup/signup';

const newUserCredentials = Cypress.env('newUser').NEW_USER_PASSWORD;
const signUpWelcomeTitle = '.signup-welcome';
const firstNameField = '[formcontrolname="firstName"]';

describe.skip('Affiliate: adding new traveler - admin travel, and check the onboarding guide limitations', () => {
  let token: string;
  beforeEach(() => {
    GrowthInterceptApis.interceptApis();
    LoginSelfSell.createNewSelfSellLead().then((login) => {
      token = login.token;
    });
  });

  it(
    'C8648627: Onboard as self sell user and adding new traveler as admin travel and check the onboarding guide limitations exists',
    { tags: ['@tier1', '@onboardingGuideIndependent'] },
    () => {
      SignUp.fillSignUpForm(token, 'MARKETING_PAGE');
      GrowthUtilities.fillAdminClaimFlowTravelAndExpenseFlow();

      OnboardingGuide.clickOnHomePage()
        .then(() => {
          return AddUser.inviteAndAdminUser();
        })
        .then(() => {
          cy.get(signUpWelcomeTitle).should('be.visible');
          return cy.get(firstNameField);
        })
        .then(() => {
          CreateAccountPage.fillUserDetailsAndPassword(
            signupUserData.firstName,
            signupUserData.lastName,
            newUserCredentials
          );
          CreateAccountPage.createAccountButton();
          OnboardingGuide.checkOnboardingGuideForTravelAdmin();
        });
    }
  );

  it.skip(
    'C9027498: Onboard as self sell user and adding new traveler as expense admin and check that the onboarding guide limitations exists',
    { tags: ['@tier1', '@onboardingGuideIndependent'] },
    () => {
      SignUp.fillSignUpForm(token, 'MARKETING_PAGE');
      GrowthUtilities.fillAdminClaimFlowTravelAndExpenseFlow();

      OnboardingGuide.clickOnHomePage()
        .then(() => {
          return AddUser.inviteAndExpenseAdminUser();
        })
        .then(() => {
          cy.get(signUpWelcomeTitle).should('be.visible');
          return cy.get(firstNameField);
        })
        .then(() => {
          CreateAccountPage.fillUserDetailsAndPassword(
            signupUserData.firstName,
            signupUserData.lastName,
            newUserCredentials
          );
          CreateAccountPage.createAccountButton();
          OnboardingGuide.checkOnboardingGuideForExpenseAdmin();
        });
    }
  );
});
