import { stagingUsers } from '@fixtures/staging-users';
import { LoginPage } from '@admin-lib/login';
import { DelegatePage } from '@growth-lib/delegate-page';

const travelPlannerPassword = Cypress.env('newUser')?.NEW_USER_PASSWORD;
const MAX_NUMBER_OF_TRAVELERS = 8;

describe('Affiliate: existing company on-boarding for delegate user', () => {
  /*
    in order to reproduce user and pass this tests for future cases
    1. create self sell user delegate page
    2. add reward banner from BE
    3. create users ['Adam Abramson', 'rchabra rrr', 'test test'] 
      - my profile is test test and create trip under "Cypress Test - Dont change" name
      - Adam Abramson should have empty trips
      - rchabra rrr should have 2+ trips
    4. create trip from user and delegated users and call the trip name 
    5. add 8+ users/guests for "search"
  */
  beforeEach(() => {
    const { travel_planner_user } = stagingUsers;
    LoginPage.clearExistingLoginSession();
    LoginPage.visitTALoginPage();
    LoginPage.loginWithCredentials(
      travel_planner_user.email,
      travelPlannerPassword,
      'legacy'
    );
    DelegatePage.closeWelcomeModal();
  });
  it(
    'C10164644: should check search by trip input filter currently',
    { tags: ['@tier1'] },
    () => {
      DelegatePage.verifyRewardsBannerShown();
      DelegatePage.verifyExistingTripsMoreThanOne();
      DelegatePage.searchTrip();

      DelegatePage.verifySingleTrip();
      DelegatePage.verifyRewardsBannerCta();
    }
  );

  it(
    'C10164645: should check View all trips CTA and empty state, ' +
      'switching users show different trips',
    { tags: ['@tier1'] },
    () => {
      DelegatePage.clickOnViewAllTrips();
      DelegatePage.verifyExistingTripsMoreThanOne();

      const emptyTripsUser = 'Adam Abramson';
      DelegatePage.getUserRow(emptyTripsUser).click();
      DelegatePage.checkEmptyState(emptyTripsUser);

      const notEmptyTripsUser = 'rchabra rrr';
      DelegatePage.getUserRow(notEmptyTripsUser).click();
      DelegatePage.verifyExistingTripsMoreThanOne();
    }
  );

  it(
    'C10167472: should check select max users, and see indications + error message,' +
      ' check guset traveler is shown in suggestions, verify users sorted',
    { tags: ['@tier1'] },
    () => {
      DelegatePage.verifyUsersSorted();
      DelegatePage.clickAddTraveler();
      DelegatePage.moveToTabInModal(1);
      DelegatePage.checkGuestUserShownInSuggestions('TestGuest Guest');
      DelegatePage.searchExistingTraveler('TestGuest G');
      DelegatePage.clearSearch();
      for (let i = 0; i < MAX_NUMBER_OF_TRAVELERS; i++) {
        DelegatePage.addFirstTravelerInResults();
      }
      DelegatePage.checkMaxUsersAddShowsError();
    }
  );
});
