import { LoginPage } from '@admin-lib/index';
import { Utility } from '@utility-lib/index';
import {
  AssistantModal,
  ContactModal,
  DelegateModal,
  EmergencyContactModal
} from '../lib/contact-info';
import { User_Type } from '@support-onboard/index';

describe('Trips: Profile: Contact Info', () => {
  beforeEach(() => {
    LoginPage.createNewCompanyAndLoginWithUserByType({
      users: [User_Type.TRAVELER]
    });
    ContactModal.interceptApis(3);
    DelegateModal.interceptApis(3);
    Utility.visitSearchPage();
  });

  it(
    'C127243 C127218: View/edit contact information',
    {
      tags: ['@tier2']
    },
    () => {
      ContactModal.visitPage();
      ContactModal.getContactInfo();
      ContactModal.createNewContactInfo(30, 'MALE', 'Personal');
      ContactModal.compareContactInfo();
    }
  );

  it(
    'C127180: Verify delegate information can be updated',
    {
      tags: ['@tier2']
    },
    () => {
      const delegate = 'Admin Navan';
      ContactModal.visitPage();
      DelegateModal.addAsDelegate(delegate);
      DelegateModal.verifyAsDelegate(delegate);
      DelegateModal.deleteAsDelegate();
      DelegateModal.addSetDelegate(delegate);
      DelegateModal.verifySetDelegate(delegate);
    }
  );

  it(
    'C127181: Verify assistant information can be updated',
    {
      tags: ['@tier3']
    },
    () => {
      const assistant = 'Admin Navan';
      const newAssistantName = 'New Assistant';
      const newAssistantEmail = 'newassistant@email.com';
      const newAssistantPhone = '5104444444';
      ContactModal.visitPage();
      AssistantModal.addExistingAssistant(assistant);
      AssistantModal.removeAssistant();
      AssistantModal.addNewAssistant(
        newAssistantName,
        newAssistantEmail,
        newAssistantPhone
      );
      AssistantModal.validateAssistant(
        newAssistantName,
        newAssistantEmail,
        newAssistantPhone
      );
      AssistantModal.addSecondAssistant(assistant);
      AssistantModal.removeAssistant();
    }
  );

  it(
    'C127247 C127182: View Emergency contact info',
    {
      tags: ['@tier2']
    },
    () => {
      const emergencyName = 'Emergency Contact';
      const emergencyEmail = 'emergency@contact.com';
      const emergencyNumber = '5105555555';
      ContactModal.visitPage();
      EmergencyContactModal.addEmergencyContact(
        emergencyName,
        emergencyEmail,
        emergencyNumber
      );
      EmergencyContactModal.verifyEmergencyContact(
        emergencyName,
        emergencyEmail,
        emergencyNumber
      );
      EmergencyContactModal.clearEmergencyContact();
    }
  );
});
