import { GrowthInterceptApis } from '@growth-lib/api-intercept';
import { OnboardByApi } from '@growth-lib/onboard-by-api';
import { OnboardingGuide } from '@growth-lib/onboarding-guide';
import { UsersWizardPages, userWizardSelectors } from '@growth-lib/users-wizard-pages';
import { LoginSelfSell } from '@support-growth/login-self-sell';

describe('Affiliate: users wizard', () => {
  let companyDomain: string;

  beforeEach(() => {
    GrowthInterceptApis.interceptApis();
    LoginSelfSell.createNewSelfSellLead({
      tag: 'userswizard'
    }).then((adminLogin) => {
      companyDomain = adminLogin.companyDomain;
      OnboardByApi.onboardSelfSellAdmin(adminLogin.token, 'MARKETING_PAGE');
      OnboardByApi.loginWithOnboardedUser();
      OnboardingGuide.verifyOnboardingGuideOpen();
      UsersWizardPages.goToUsersWizardLandingPage();
      UsersWizardPages.checkLandingPageOpened();
    });
  });

  it('C13140027: new users wizard - add individuals', { tags: ['@tier1'] }, () => {
    UsersWizardPages.nextUntilHowAddUsersPage();
    UsersWizardPages.clickOn(userWizardSelectors.addUserIndividualyButton);
    UsersWizardPages.clickNextButton();
    UsersWizardPages.checkUsersTableCount(1);
    UsersWizardPages.fillNewUser({
      firstName: 'userA',
      lastName: 'familyA',
      email: 'test-user@' + companyDomain,
      userNum: '0'
    });
    UsersWizardPages.checkUserInPreviewTable(0, 'userA familyA', 'test-user@' + companyDomain);
    UsersWizardPages.checkUsersTableCount(2);

    UsersWizardPages.clickNextButton();
    UsersWizardPages.fillInvitationText();
    UsersWizardPages.completeWizardAndWaitForInvitations();
    UsersWizardPages.checkNewUserInUsersTable('test-user@' + companyDomain);
  });

  it('C13512093: new users wizard - bulk upload', { tags: ['@tier1'] }, () => {
    UsersWizardPages.nextUntilHowAddUsersPage();
    UsersWizardPages.clickOn(userWizardSelectors.userBulkUploadButton);
    UsersWizardPages.clickNextButton();
    UsersWizardPages.checkDownloadTemplate();
    UsersWizardPages.uploadBulkFile(companyDomain, userWizardSelectors.csvFilePath, userWizardSelectors.csvFile1User);
    UsersWizardPages.verifyFileLoaded(userWizardSelectors.csvFile1User.replace('.csv', ''));
    UsersWizardPages.clickNextButton();
    UsersWizardPages.fillInvitationText();
    UsersWizardPages.completeWizardAndWaitForFile();
    UsersWizardPages.checkInvitationsModalTotal('1');
    UsersWizardPages.checkNewUserInUsersTable('just-a-check@' + companyDomain);
  });
});
