import * as React from "react";
import * as ReactDOM from "react-dom";
import SideMenuComponent from "../components/SideMenu";
import MenuItem from "../components/SideMenu/MenuItem";
import { render, cleanup, Simulate } from "react-testing-library";
import { createMenuItems } from "./utils/sidemenu";
beforeEach(cleanup);
describe("SideMenu and MenuItems tests", () => {
test("01- MenuItems renders correctly", () => {
const item = "1";
const displayValue = "test:1";
const { getByTestId, container } = render(
);
expect(getByTestId("menuItem").id).toEqual(displayValue);
});
test("02- SideMenu renders correctly", () => {
const clicked: () => void = jest.fn();
const item = createMenuItems();
const { getByTestId, container } = render(
{item}
);
expect(getByTestId("sideMenu").children.length).toBe(4);
});
test("03- Menu item is clicked", () => {
const clicked: () => void = jest.fn();
const { getByTestId, container } = render(
);
Simulate.click(getByTestId("menuItem"));
expect(clicked).toHaveBeenCalledWith("item1");
});
test("04- Sidemenu onclick works", () => {
const clicked: () => void = jest.fn();
const items = createMenuItems();
const { getByTestId, container } = render(
{items}
);
Simulate.click(getByTestId("menuItem"));
expect(clicked).toHaveBeenCalled();
});
test("05- selected prop works", () => {
const { getByTestId, container, rerender } = render(
);
expect(getByTestId("menuItem").selected).toBeFalsy();
rerender(
);
expect(getByTestId("menuItem").selected).toBeTruthy();
});
test("06- disabled prop works", () => {
const { getByTestId, rerender, container } = render(
);
expect(getByTestId("menuItem").disabled).toBeFalsy();
});
test("07- Sidemenu and MenuItem snapshot", () => {
const clicked: () => void = jest.fn();
const item = [
,
,
,
,
];
const { container } = render(
{item});
expect(container).toMatchSnapshot();
});
});