import { Persona, SignupReason } from '@growth-lib/persona';
import { AdminClaim } from '@growth-lib/admin-claim';
import { CompanySetup } from '@growth-lib/company-setup';
import { FreePricing } from '@growth-lib/free-pricing';

export class GrowthUtilities {
  static fillAdminClaimFlowNoExpenseFlow(): void {
    Persona.answerFirstPersonaAsTravelerManagerAccount();
    FreePricing.openAdminClaim();
    AdminClaim.fillAdminClaim();
  }

  static fillAdminClaimFlowTravelAndExpenseFlow(): void {
    Persona.answerFirstPersonaQuestion(SignupReason.TRAVEL_AND_EXPENSE_SOLUTION);
    FreePricing.openAdminClaim();
    AdminClaim.fillAdminClaim();
  }

  static fillAdminClaimFlowNoExpenseFlowForPricingV2(): void {
    Persona.answerFirstPersonaAsTravelerManagerAccount();
    FreePricing.openAdminClaim();
  }
  static fillAdminClaimFlowTravelAndExpenseFlowForPricingV2(): void {
    Persona.answerFirstPersonaAsTravelerAndExpanseManagerAccount();
    FreePricing.openAdminClaim();
    AdminClaim.fillAdminClaim();
  }

  static fillAdminClaimFlowTravelAndExpenseFlowForControlAndVisibilityMobileWeb(): void {
    cy.allure().logStep('Expense Traveler Flow With Admin Travel & Expense Account For Control & Visibility');
    Persona.answerFirstPersonaAsTravelerAndExpanseManagerAccount();
    FreePricing.openAdminClaim();
    CompanySetup.verifyNavanVideoAndKeyBenefitsCardsExistMobileWeb();
    CompanySetup.openAndCloseInviteAdminModalMobileWeb();
    AdminClaim.fillAdminClaim();
  }

  static fillPersonaSkipAdminClaim(): void {
    Persona.answerFirstPersonaAsTravelerManagerAccount();
    FreePricing.openAdminClaim();
    CompanySetup.skipAdminClaim();
  }

  static hideLiquidUnifiedListBanner(): void {
    cy.allure().logStep('hideUnifiedListBanner');
    window.localStorage.setItem('hideUnifiedListBanner', 'true');
  }

  static generateRandomTag(): string {
    return Date.now().toString();
  }
}
