import React from "react";
import "@testing-library/jest-dom/extend-expect";
import { render, fireEvent } from "@testing-library/react";
import Icon from "../icon";
const iconMock = {
id: "test-id",
viewBox: "0 0 0 0"
};
test("shows icon with default parameters", () => {
const { queryByTestId } = render();
expect(queryByTestId("honeyui-icon-test-id")).not.toBeNull();
expect(queryByTestId("honeyui-icon-test-id")).toHaveClass("honeyui-icon");
expect(queryByTestId("honeyui-icon-test-id")).toHaveClass("honeyui-icon--test-id");
expect(queryByTestId("honeyui-icon-test-id")).not.toHaveClass("text-primary");
expect(queryByTestId("honeyui-icon-test-id").getAttribute("role")).toEqual("img");
expect(queryByTestId("honeyui-icon-test-id-title")).toBeNull();
fireEvent.click(queryByTestId("honeyui-icon-test-id"));
});
test("shows icon with different sizes", () => {
const xs = render();
expect(xs.queryByTestId("honeyui-icon-test-id").getAttribute("width")).toEqual("12");
xs.unmount();
const sm = render();
expect(sm.queryByTestId("honeyui-icon-test-id").getAttribute("width")).toEqual("16");
sm.unmount();
const md = render();
expect(md.queryByTestId("honeyui-icon-test-id").getAttribute("width")).toEqual("24");
md.unmount();
const lg = render();
expect(lg.queryByTestId("honeyui-icon-test-id").getAttribute("width")).toEqual("28");
lg.unmount();
const xl = render();
expect(xl.queryByTestId("honeyui-icon-test-id").getAttribute("width")).toEqual("32");
xl.unmount();
const xxl = render();
expect(xxl.queryByTestId("honeyui-icon-test-id").getAttribute("width")).toEqual("64");
xxl.unmount();
const custom = render(
);
expect(custom.queryByTestId("honeyui-icon-test-id").getAttribute("width")).toEqual("14");
expect(custom.queryByTestId("honeyui-icon-test-id").getAttribute("height")).toEqual("24");
custom.unmount();
});
test("shows icon with custom className", () => {
const { queryByTestId } = render(
);
expect(queryByTestId("honeyui-icon-test-id")).toHaveClass("custom-class-name");
});
test("shows icon with color", () => {
const { queryByTestId } = render(
);
expect(queryByTestId("honeyui-icon-test-id")).toHaveClass("text-primary");
});
test("shows icon with different data-testid", () => {
const icon = render(
);
expect(icon.queryByTestId("xxx")).toBeDefined();
});
test("shows icon with click support", () => {
const onClick = jest.fn();
const { queryByTestId } = render(
);
expect(queryByTestId("honeyui-icon-test-id-title")).toHaveTextContent("test title");
expect(onClick).toBeCalledTimes(0);
fireEvent.click(queryByTestId("honeyui-icon-test-id"));
expect(onClick).toBeCalledTimes(1);
fireEvent.keyPress(queryByTestId("honeyui-icon-test-id"), {
key: "Enter",
code: 13,
charCode: 13
});
expect(onClick).toBeCalledTimes(2);
fireEvent.keyPress(queryByTestId("honeyui-icon-test-id"), { key: " ", code: 32, charCode: 32 });
expect(onClick).toBeCalledTimes(3);
});
test("should warn if something not write", () => {
console.warn = jest.fn();
const onClick = jest.fn();
render();
expect(console.warn).toBeCalledTimes(0);
render();
expect(console.warn).toBeCalledTimes(1);
});