import React from "react"; import { createSerializer } from "@emotion/jest"; import { render } from "@testing-library/react"; import { Sidebar, SidebarItem, SidebarItemLabel, SidebarSection, SidebarSubMenuItem } from "../"; import { SidebarSubMenuComponent, getSubItemList } from "../components/SidebarSubMenu"; import { ProductIcons } from "../../icons/dist/product-icons-enum"; expect.addSnapshotSerializer(createSerializer()); describe("Sidebar", () => { it("renders", () => { const { asFragment } = render( Sidebar content ); expect(asFragment()).toMatchSnapshot(); }); it("calls onOpen callback", () => { const onOpenFn = jest.fn(); const { rerender } = render( Sidebar content ); expect(onOpenFn).not.toHaveBeenCalled(); rerender( Sidebar content ); expect(onOpenFn).toHaveBeenCalled(); }); it("calls onClose callback", () => { const onCloseFn = jest.fn(); const { rerender } = render( Sidebar content ); expect(onCloseFn).not.toHaveBeenCalled(); rerender( Sidebar content ); expect(onCloseFn).toHaveBeenCalled(); }); describe("SidebarSection", () => { it("renders", () => { const { asFragment } = render(
Sidebar section content
); expect(asFragment()).toMatchSnapshot(); }); }); describe("SidebarItem", () => { it("renders", () => { const onClickFn = jest.fn(); const { asFragment } = render( Item label ); expect(asFragment()).toMatchSnapshot(); }); }); describe("SidebarItemLabel", () => { it("renders", () => { const { asFragment } = render( Item label ); expect(asFragment()).toMatchSnapshot(); }); }); describe("SidebarSubMenu", () => { const onClickFn = jest.fn(); /* eslint-disable react/jsx-wrap-multilines */ const subMenuItems = [ Item label , Item label ]; /* eslint-enable react/jsx-wrap-multilines */ const { asFragment } = render( Item label } > {subMenuItems} ); it("renders", () => { expect(asFragment()).toMatchSnapshot(); }); it("makes a list of submenu items", () => { const subItemResult = getSubItemList(subMenuItems); expect(subItemResult.props.children.length).toBe(2); }); }); describe("SidebarSubMenuItem", () => { it("renders", () => { const { asFragment } = render( Item label ); expect(asFragment()).toMatchSnapshot(); }); }); });