import { fireEvent, render, screen } from "@testing-library/react";
import React from "react";
import { NavigationBar } from "./NavigationBar";
import {
MockLogo,
MockLeftNavItems,
MockRightNavItems,
MockMobileNavItems,
} from "./NavigationBar.mock";
describe("Navigation Bar", () => {
it("should render correctly with the given input on desktop menu", () => {
render(
}
menuLeft={MockLeftNavItems}
menuRight={MockRightNavItems}
menuMobile={[]}
setToggleNavBar={() => {}}
toggleNavBar={false}
/>
);
expect(screen.getByText("Resources")).toBeInTheDocument();
expect(screen.getByText("News & Events")).toBeInTheDocument();
expect(screen.getByText("Contact")).toBeInTheDocument();
expect(screen.getByText("Create Doc")).toBeInTheDocument();
expect(screen.getByText("Verify Doc")).toBeInTheDocument();
expect(screen.getByTestId("settings")).toBeInTheDocument();
});
it("should render correctly with the given input on mobile menu", () => {
render(
}
menuLeft={[]}
menuRight={[]}
menuMobile={MockMobileNavItems}
setToggleNavBar={() => {}}
toggleNavBar={false}
/>
);
expect(screen.getByText("Resources")).toBeInTheDocument();
expect(screen.getByText("News & Events")).toBeInTheDocument();
expect(screen.getByText("Contact")).toBeInTheDocument();
expect(screen.getByText("Create Doc")).toBeInTheDocument();
expect(screen.getByText("Verify Doc")).toBeInTheDocument();
expect(screen.getByTestId("settings")).toBeInTheDocument();
});
it("should render correctly with the given input on desktop and mobile menu", () => {
render(
}
menuLeft={MockLeftNavItems}
menuRight={MockRightNavItems}
menuMobile={MockMobileNavItems}
setToggleNavBar={() => {}}
toggleNavBar={false}
/>
);
expect(screen.getAllByText("Resources")).toHaveLength(2);
expect(screen.getAllByText("News & Events")).toHaveLength(2);
expect(screen.getAllByText("Contact")).toHaveLength(2);
expect(screen.getAllByText("Create Doc")).toHaveLength(2);
expect(screen.getAllByText("Verify Doc")).toHaveLength(2);
expect(screen.getAllByTestId("settings")).toHaveLength(2);
});
it("should collapse dropdown menu when click on other links", () => {
render(
}
menuLeft={MockLeftNavItems}
menuRight={MockRightNavItems}
menuMobile={[]}
setToggleNavBar={() => {}}
toggleNavBar={false}
/>
);
fireEvent.click(screen.getByText("Resources"));
expect(screen.getByText("Learn")).toBeInTheDocument();
fireEvent.click(screen.getByText("Contact"));
expect(screen.queryByText("Learn")).not.toBeInTheDocument();
});
it("should collapse dropdown menu when click anywhere else", () => {
render(
}
menuLeft={MockLeftNavItems}
menuRight={MockRightNavItems}
menuMobile={[]}
setToggleNavBar={() => {}}
toggleNavBar={false}
/>
);
fireEvent.click(screen.getByText("Resources"));
expect(screen.getByText("Learn")).toBeInTheDocument();
fireEvent.click(document.body);
expect(screen.queryByText("Learn")).not.toBeInTheDocument();
});
});