import { LoginPage } from '@admin-lib/index';
import {
  Hotels,
  HotelCheckout,
  HotelSearchResults,
  HotelItinerary,
  HotelInterceptApis,
  bookHotel
} from '@hotel-lib/index';
import { User_Type } from '@support-onboard/index';
import { Random, Utility } from '@utility-lib/index';
import { HotelInvoiceValidation } from '@commerce-lib/hotels/invoice_validation';
import { PersonalTravel } from '../../lib/travel';

const tripTileType = 'Business';
describe('Personal Travel: Offboarding user', () => {
  beforeEach(() => {
    LoginPage.createNewCompanyAndLoginWithUserByType({ users: [User_Type.ADMIN] });
    LoginPage.createNewTravelerAndLogin();
    cy.getCurrentUserInfo();
    HotelInterceptApis.interceptHotelApis();
  });

  it(
    'C8108004: Verify user is able to view personal trips after offboarding',
    { tags: ['@tier2'] },
    () => {
      bookHotel(tripTileType);
      HotelItinerary.visitItinerary();
      HotelItinerary.viewAndManageItinerary();
      HotelItinerary.addNewTripInCurrentItinerary('Hotel');
      Utility.selectTripTileType('Personal');
      Hotels.searchHotel();
      HotelSearchResults.selectHotel(0);
      HotelSearchResults.selectRoomOption();
      HotelCheckout.createNewTripInfo();
      HotelCheckout.hotelCancellationAndChargePolicy();
      HotelCheckout.acceptHotelBookingPolicy();
      HotelCheckout.setPhoneNumber();
      HotelCheckout.checkIfProofOfVaccineRequired();
      HotelCheckout.updateEmailDetails(
        'personal-' + Random.randomString(12) + '@staging-prime.tripactions.xyz'
      );
      HotelCheckout.acceptAcknowledgement();
      HotelInvoiceValidation.storeBookingData();
      HotelCheckout.bookNow();
      HotelCheckout.expectHotelBookedSuccessfully('Hotel confirmed!');
      HotelItinerary.visitItinerary();
      Utility.loginAsAdmin('Trip@123');
      PersonalTravel.visitUsersPage();
      PersonalTravel.fillGuestInfoFromCachedUser();
      PersonalTravel.disableUser();
    }
  );
});
