import { LoginPage } from '@admin-lib/index';
import { User_Type } from '@support-onboard/data_model/user_type';
import { TrainSearchResults, CheckoutModal, TrainInterceptApis } from '@train-lib/index';
import { TripApproval, CreateProposal, TripProposalInterceptApis, TripProposalBooking } from '@tripProposal-lib/index';

const newUserCredentials = Cypress.env('newUser').NEW_USER_PASSWORD;

describe('Train: Trip proposal', () => {
  beforeEach(() => {
    TripProposalInterceptApis.tripIntercepts();
    TrainInterceptApis.interceptTrainApis();
    LoginPage.createNewCompanyAndLoginWithUserByType({
      users: [User_Type.ADMIN],
      tripProposal: true
    });
    cy.enableTripProposal();
  });
  it('C619959 C51019: Verify train booking via trip proposal flow', { tags: ['@tier1'] }, () => {
    LoginPage.createNewTravelerAndLogin();
    CreateProposal.visitNewTripProposalPage();
    CreateProposal.setTripName();
    CreateProposal.setTripReason();
    CreateProposal.setBookingType('train');
    TripProposalBooking.trainBooking();
    CreateProposal.sendProposal();
    CreateProposal.sendRequestToManager();
    CreateProposal.loginAsAdmin(newUserCredentials);
    CreateProposal.visitAdminPage();
    TripApproval.viewApproval('APPROVALS_PROPOSALS');
    TripApproval.expectTripProposalIsCreated('Berlin Trip');
    TripApproval.approveTripProposal();
    CreateProposal.loginAsTraveler();
    CreateProposal.visitNewTripProposalPage();
    TripProposalBooking.startBooking();
    TrainSearchResults.expectSearchResultPresent();
    TrainSearchResults.selectTrain(1);
    CheckoutModal.checkout();
  });
});
