import {
  createBookingForTheCompany,
  openCreatedUserDetails,
  prepareTravelXenEnv,
  visitTravelxen
} from '@travelxen-lib/utils';
import { stagingUsers } from '@fixtures/staging-users';
import { TravelxenImpersonationPage } from '@travelxen-lib/pages/travelxen_impersonation';
import { userInformationSelectors } from '@travelxen-lib/selectors/user';

const { travelxen } = stagingUsers;
const agentCreds = Cypress.env('travelxen').TRAVEL_XEN_PASSWORD;

describe('Travelxen impersonation', () => {
  beforeEach(() => {
    const userName = travelxen.email;
    const password = agentCreds;

    prepareTravelXenEnv();
    createBookingForTheCompany();
    visitTravelxen();

    TravelxenImpersonationPage.loginToTravelxen(userName, password);

    openCreatedUserDetails();
    cy.get(userInformationSelectors.userInformationNavBtn).should('be.visible');
  });

  it('C5560604: can impersonate user', { tags: ['@tier2'] }, () => {
    TravelxenImpersonationPage.checkIfCanImpersonate();
    TravelxenImpersonationPage.checkUsersTrips();
  });

  it('C5560605: can impersonate admin', { tags: ['@tier2'] }, () => {
    TravelxenImpersonationPage.checkIfCanImpersonate(true);
  });
});
