import { URL_VERIFY } from './../../../growth_common_lib/onboarding-guide.utils';
import {
  SignUp,
  GrowthInterceptApis,
  AmplitudeEvents,
  LoginSelfSell,
  OnboardingGuide,
  BillingEntity,
  AdminClaim,
  ONBOARDING_GUIDE_SELECTORS,
  FreePricing
} from '@growth-lib/index';
import { OnboardByApi } from '@growth-lib/onboard-by-api';
import { HomePage } from '@rebranded_home_page-lib/home-page';
import { SignupReason } from '@growth-lib/persona';
import { DelegatePage } from '@growth-lib/delegate-page';
import { GrowthUtilities } from '@growth-lib/growth-utilities';

describe('Growth: signup without admin claim for 3 users', () => {
  let token: string;
  let companyDomain: string;

  beforeEach(() => {
    GrowthInterceptApis.interceptApis();
  });

  it('C11588673: Onboard as self sell user as rogue traveler with persona question first', { tags: ['@tier1'] }, () => {
    LoginSelfSell.createNewSelfSellLead().then((login) => {
      token = login.token;
      companyDomain = login.companyDomain;

      SignUp.signupWithSkipAdmin(token, SignupReason.BOOK_TRIP, false);

      HomePage.verifyHomePage();
      AdminClaim.clickCompanySetupNavBarCta();
      FreePricing.openAdminClaim();
      AmplitudeEvents.expectAmplitudeEventsToBeSent();
    });
  });

  it('C11588674: Onboard as self sell second user as admin traveler with admin claim', { tags: ['@tier1'] }, () => {
    LoginSelfSell.createNewSelfSellLead({
      tag: GrowthUtilities.generateRandomTag(),
      companyDomain
    }).then((login) => {
      token = login.token;
      SignUp.signupWithSkipAdmin(token, SignupReason.TRAVEL_SOLUTION, false);

      FreePricing.verifyTravelPricingScreenIsOpened();
      FreePricing.openAdminClaim();
      HomePage.verifyHomePage();
      AmplitudeEvents.expectAmplitudeEventsToBeSent();
    });
  });

  it('C11588675: Onboard as self sell third user as rogue traveler', { tags: ['@tier1'] }, () => {
    LoginSelfSell.createNewSelfSellLead({
      tag: GrowthUtilities.generateRandomTag(),
      companyDomain
    }).then((login) => {
      token = login.token;

      SignUp.visitPersonaSignUp(token, 'MARKETING_PAGE');
      SignUp.fillUserDetail();
      SignUp.submitSignUp();
      HomePage.verifyHomePage();
      AmplitudeEvents.expectAmplitudeEventsToBeSent();
      OnboardByApi.deleteLastOnboardedCompany();
    });
  });
});

describe('Growth: signup without admin claim for bfo user', () => {
  let token: string;
  beforeEach(() => {
    GrowthInterceptApis.interceptApis();
    LoginSelfSell.createNewSelfSellLead().then((login) => {
      token = login.token;
    });
  });

  it('C11588676: Onboard as self sell user as bfo traveler with persona question first', { tags: ['@tier1'] }, () => {
    SignUp.signupWithSkipAdmin(token, SignupReason.BOOK_FOR_OTHERS, false);

    DelegatePage.verifyDelegateHomePageOpened();
    HomePage.visitHomePage();
    AdminClaim.clickCompanySetupMidScreenCta();
    FreePricing.openAdminClaim();
    AmplitudeEvents.expectAmplitudeEventsToBeSent();
  });

  it('C11588677: Onboard as self sell user as group travel with persona question first', { tags: ['@tier1'] }, () => {
    SignUp.signupWithSkipAdmin(token, SignupReason.TEAM_OFFSITE, false);

    FreePricing.verifyTravelPricingScreenIsOpened();
    AmplitudeEvents.expectAmplitudeEventsToBeSent();
  });

  it('C11669291: Onboard as self sell travel admin with persona question first', { tags: ['@tier1'] }, () => {
    SignUp.signupWithSkipAdmin(token, SignupReason.TRAVEL_SOLUTION, false);
    FreePricing.verifyTravelPricingScreenIsOpened();
    FreePricing.openAdminClaim();

    OnboardingGuide.clickOnboardingGuideGetMoreTasksButton();
    OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.expenseLearnMoreButton);
    OnboardingGuide.checkUrl(URL_VERIFY.UPSELL_EXPENSE);
    cy.get(ONBOARDING_GUIDE_SELECTORS.adminAddExpenseTasksCheckbox).click();
    cy.get(ONBOARDING_GUIDE_SELECTORS.adminGoToLegalAddressButton).click();
    BillingEntity.fillBillingEntityForm();
    AmplitudeEvents.expectAmplitudeEventsToBeSent();
  });
});
