import React from "react"; import "@testing-library/jest-dom/extend-expect"; import { render, fireEvent } from "@testing-library/react"; import Dropdown from "../dropdown"; import DropdownItem from "../dropdown-item"; test("should open and close dropdown", () => { const { queryByTestId } = render( [Icon]} position="left" >
content
); expect(queryByTestId("dropdown-handler")).not.toBeNull(); expect(queryByTestId("test-nav-id-dropdown-body")).toBeNull(); fireEvent.click(queryByTestId("dropdown-handler")); expect(queryByTestId("test-nav-id-dropdown-body")).not.toBeNull(); expect(queryByTestId("test-nav-id-dropdown-body")).toHaveClass("show"); fireEvent.click(document.body); expect(queryByTestId("test-nav-id-dropdown-body")).toBeNull(); }); test("should show dropdown with custom weight/height attributes", () => { const { queryByTestId } = render(
dropdown item
); expect(queryByTestId("honeyui-dropdown")).toHaveClass("btn-primary"); fireEvent.click(queryByTestId("honeyui-dropdown")); // styles expect(queryByTestId("honeyui-dropdown-dropdown-body").style["min-height"]).toEqual("100px"); expect(queryByTestId("honeyui-dropdown-dropdown-body").style["min-width"]).toEqual("100px"); expect(queryByTestId("honeyui-dropdown-dropdown-body").style["max-height"]).toEqual("100px"); expect(queryByTestId("honeyui-dropdown-dropdown-body").style["max-width"]).toEqual("100%"); }); test("should show dropdown with default attributes", () => { const { queryByTestId } = render(
dropdown item
); expect(queryByTestId("honeyui-dropdown")).toHaveClass("btn-primary"); fireEvent.click(queryByTestId("honeyui-dropdown")); // styles expect(queryByTestId("honeyui-dropdown-dropdown-body").style["min-height"]).toEqual("0"); expect(queryByTestId("honeyui-dropdown-dropdown-body").style["min-width"]).toEqual("0"); expect(queryByTestId("honeyui-dropdown-dropdown-body").style["max-height"]).toEqual("284px"); expect(queryByTestId("honeyui-dropdown-dropdown-body").style["max-width"]).toEqual("300px"); }); test("should show arrow on dropdown", () => { const { queryByTestId } = render(
content
); expect(queryByTestId("test-nav-id")).toHaveClass("dropdown-toggle"); }); test("should support keyboard navigation", () => { const { queryByTestId } = render( Item 1 Item 2 Item 3 ); fireEvent.click(queryByTestId("dropdown")); fireEvent.keyDown(document.activeElement, { key: "ArrowDown", code: 40, charCode: 40 }); expect(queryByTestId("dropdown-item1")).toHaveFocus(); fireEvent.keyDown(document.activeElement, { key: "ArrowDown", code: 40, charCode: 40 }); expect(queryByTestId("dropdown-item2")).toHaveFocus(); fireEvent.keyDown(document.activeElement, { key: "ArrowDown", code: 40, charCode: 40 }); expect(queryByTestId("dropdown-item3")).toHaveFocus(); fireEvent.keyDown(document.activeElement, { key: "ArrowDown", code: 40, charCode: 40 }); expect(queryByTestId("dropdown-item3")).toHaveFocus(); fireEvent.keyDown(document.activeElement, { key: "ArrowUp", code: 38, charCode: 38 }); expect(queryByTestId("dropdown-item2")).toHaveFocus(); fireEvent.keyDown(document.activeElement, { key: "ArrowUp", code: 38, charCode: 38 }); expect(queryByTestId("dropdown-item1")).toHaveFocus(); fireEvent.keyDown(document.activeElement, { key: "ArrowUp", code: 38, charCode: 38 }); expect(queryByTestId("dropdown-item1")).toHaveFocus(); });