monday-ui-react-core
Version:
Official monday.com UI resources for application development in React.js
98 lines (76 loc) • 2.89 kB
JavaScript
import React from "react";
import { fireEvent, render } from "@testing-library/react";
import BreadcrumbsBar from "../../BreadcrumbsBar";
import BreadcrumbItem from "../BreadcrumbItem";
jest.useFakeTimers();
describe("BreadcrumbsItem tests", () => {
it("if navigation item, href link is correct", () => {
const { getByRole } = render(
<BreadcrumbsBar type={BreadcrumbsBar.types.NAVIGATION}>
<BreadcrumbItem text="Workspace" link="https://www.google.com" />
</BreadcrumbsBar>
);
const link = getByRole("link");
expect(link.getAttribute("href")).toBe("https://www.google.com");
});
it("if navigation item, click works", () => {
const onClickMock = jest.fn();
const { getByText } = render(
<BreadcrumbsBar type={BreadcrumbsBar.types.NAVIGATION}>
<BreadcrumbItem text="Workspace" onClick={onClickMock} />
</BreadcrumbsBar>
);
const item = getByText("Workspace");
fireEvent.click(item);
jest.advanceTimersByTime(1000);
expect(onClickMock.mock.calls.length).toBe(1);
});
it("if indication item, click does nothing", () => {
const onClickMock = jest.fn();
const { getByText } = render(
<BreadcrumbsBar type={BreadcrumbsBar.types.INDICATION}>
<BreadcrumbItem text="Workspace" onClick={onClickMock} />
</BreadcrumbsBar>
);
const item = getByText("Workspace");
fireEvent.click(item);
jest.advanceTimersByTime(1000);
expect(onClickMock.mock.calls.length).toBe(0);
});
it("click with Enter key works", () => {
const onClickMock = jest.fn();
const { getByText } = render(
<BreadcrumbsBar type={BreadcrumbsBar.types.NAVIGATION}>
<BreadcrumbItem text="Workspace" onClick={onClickMock} />
</BreadcrumbsBar>
);
const item = getByText("Workspace");
fireEvent.focus(item);
fireEvent.keyDown(item, { key: "Enter", code: "Enter", charCode: "13" });
jest.advanceTimersByTime(1000);
expect(onClickMock.mock.calls.length).toBe(1);
});
it("click with Space key works", () => {
const onClickMock = jest.fn();
const { getByText } = render(
<BreadcrumbsBar type={BreadcrumbsBar.types.NAVIGATION}>
<BreadcrumbItem text="Workspace" onClick={onClickMock} />
</BreadcrumbsBar>
);
const item = getByText("Workspace");
fireEvent.keyDown(item, { key: " ", code: "Space", charCode: "32" });
jest.advanceTimersByTime(1000);
expect(onClickMock.mock.calls.length).toBe(1);
});
it("should call the click callback when clicked", () => {
const onClickMock = jest.fn();
const { getByText } = render(
<BreadcrumbsBar>
<BreadcrumbItem text="Workspace" onClick={onClickMock} />
</BreadcrumbsBar>
);
const item = getByText("Workspace");
fireEvent.click(item);
expect(onClickMock.mock.calls.length).toBe(0);
});
});