import {
  checkNavigationLink,
  EXPERT_LOGIN,
  login,
  PARTICIPANT_LOGIN,
  visitCoursePage,
} from "./helpers";

describe("navigation.cy.js", () => {
  const openMobileNavigation = () => {
    cy.get('[data-cy="navigation-mobile-menu-button"]').click();
  };

  beforeEach(() => {
    cy.manageCommand("cypress_reset");
  });

  describe("Desktop view", () => {
    beforeEach(() => {
      cy.viewport(1280, 720);
    });

    describe("Expert / Trainer", () => {
      beforeEach(() => {
        login(...EXPERT_LOGIN);
        visitCoursePage("cockpit");
      });

      it("should have correct expert navigation", () => {
        checkNavigationLink("navigation-cockpit-link", "cockpit");
        checkNavigationLink("navigation-preview-link", "learn");

        cy.get('[data-cy="navigation-competence-profile-link"]').should(
          "not.exist"
        );
        cy.get('[data-cy="navigation-learning-path-link"]').should("not.exist");
      });
    });

    describe("Participant", () => {
      beforeEach(() => {
        login(...PARTICIPANT_LOGIN);
        visitCoursePage("learn");
      });

      it("should have correct navigation", () => {
        checkNavigationLink("navigation-competence-profile-link", "competence");
        checkNavigationLink("navigation-learning-path-link", "learn");

        cy.get('[data-cy="navigation-cockpit-link"]').should("not.exist");
        cy.get('[data-cy="navigation-preview-link"]').should("not.exist");
      });
    });
  });

  describe("Mobile view", () => {
    beforeEach(() => {
      cy.viewport(375, 667);
    });

    describe("Expert / Trainer", () => {
      beforeEach(() => {
        login(...EXPERT_LOGIN);
        visitCoursePage("cockpit");
        openMobileNavigation();
      });

      it("should have correct expert navigation", () => {
        cy.get('[data-cy="navigation-mobile-cockpit-link"]').should("exist");
        cy.get('[data-cy="navigation-mobile-preview-link"]').should("exist");
        cy.get('[data-cy="navigation-mobile-competence-profile-link"]').should(
          "not.exist"
        );
        cy.get('[data-cy="navigation-mobile-learning-path-link"]').should(
          "not.exist"
        );
      });
    });

    describe("Participant", () => {
      beforeEach(() => {
        login(...PARTICIPANT_LOGIN);
        visitCoursePage("learn");
        openMobileNavigation();
      });

      it("should have correct navigation", () => {
        cy.get('[data-cy="navigation-mobile-cockpit-link"]').should(
          "not.exist"
        );
        cy.get('[data-cy="navigation-mobile-preview-link"]').should(
          "not.exist"
        );
        cy.get('[data-cy="navigation-mobile-competence-profile-link"]').should(
          "exist"
        );
        cy.get('[data-cy="navigation-mobile-learning-path-link"]').should(
          "exist"
        );
      });
    });
  });
});
