const selectors = {
  platformSwitcherDropdown: '.ta-platform-switcher--logo',
  adminNavBar: '.admin-nav',
  adminDashboardURL: '/app/admin2/en/dashboard',
  guestTravelContent: '.guest-invitations__content',
  guestTravelURL: 'app/admin2/en/guest-invites',
  menuItem: (index: string) => `ta-menu-item[qaid="${index}-menu-item"]`
};

export class NavigationMenu {
  static openPlatformDropdown(): void {
    cy.allure().logStep('Opening platform switching dropdown menu');
    cy.get(selectors.platformSwitcherDropdown).click();
  }

  static selectMeunButton(selection: string) {
    cy.allure().logStep(`Selecting dropdown menu option ${selection}`);
    cy.get(this.returnMenuButton(selection)).click();
  }

  static verifyAdminDashboard(): void {
    cy.allure().logStep('Verifying Admin Dashboard page');
    cy.get(selectors.adminNavBar).should('be.visible');
    cy.url().then((url) => {
      expect(url).to.include(selectors.adminDashboardURL);
    });
  }

  static verifyGuestInvitesPage(): void {
    cy.allure().logStep('Verifying Guest Travel page');
    cy.get(selectors.guestTravelContent).should('be.visible');
    cy.url().then((url) => {
      expect(url).to.include(selectors.guestTravelURL);
    });
  }

  static returnMenuButton(index: string) {
    return selectors.menuItem(index);
  }
}
