import { LoginPage } from '@admin-lib/index';
import { User_Type } from '@support-onboard/index';
import { EventsPage } from 'cypress/e2e/gme/group_events/lib/events_page';
import {
  TeamEventsInterceptApis,
  EventDetails,
  EventsWorkflow,
  Invitations
} from '@group-events-lib/index';
import { Utility } from '@utility-lib/index';

const eventLocation = 'Zurich';
const eventName = 'Zurich event';
const vertical1 = 'Flight';
const vertical2 = 'Hotel';
const warningText = 'No default booking types selected';
const officeLocation = 'Munich';
const tabs = ['Flights', 'Hotels', 'Train'];
const length = 3;

describe('GME: Team event: Draft Events', () => {
  beforeEach(() => {
    LoginPage.createNewCompanyAndLoginWithUserByType({ users: [User_Type.ADMIN] });

    TeamEventsInterceptApis.teamEventIntercept();
  });

  it('C3541221: Allowed verticals', { tags: ['@tier2'] }, () => {
    EventsWorkflow.createDraftEvent(eventLocation, eventName);
    EventDetails.verifyDefaultAllowedVerticals(vertical1, vertical2);
    EventDetails.uncheckAllowedVertical(0);
    EventDetails.uncheckAllowedVertical(1);
    EventDetails.verifyAllowedBookingsWarning(warningText);
    EventDetails.checkAllowedVertical(0);
    EventDetails.checkAllowedVertical(1);
    EventDetails.checkAllowedVertical(2);
    EventDetails.saveChanges();
    EventDetails.switchTabs('participants');
    EventDetails.setEventParticipant();
    EventDetails.setEventLocationDeparture(officeLocation);
    EventDetails.verifySelectedVerticalIsEnabledForParticipant(0);
    EventDetails.verifySelectedVerticalIsEnabledForParticipant(1);
    EventDetails.verifySelectedVerticalIsEnabledForParticipant(2);
    EventDetails.switchTabs('settings');
    EventDetails.verifyAllowedBookingVerticalsDisabled();
    EventDetails.switchTabs('participants');
    EventDetails.sendInvite();
    EventDetails.expectTeamEventCreated();
    Utility.visitSearchPage();
    Invitations.verifyOnlyAllowedVerticalsTabsAreVisible(tabs, length);
    Utility.openEventsPage();
    EventsPage.cancelEvent();
    EventsPage.selectEventByTitle(eventName);
    EventDetails.switchTabs('settings');
    EventDetails.verifyAllowedBookingVerticalsDisabled();
  });
});
