import React from "react"; import { render, fireEvent } from "@testing-library/react"; import { createSerializer } from "@emotion/jest"; import { ToggleInput } from "../"; import { InputAppearance } from "../../shared/types/inputAppearance"; expect.addSnapshotSerializer(createSerializer()); describe("ToggleInput", () => { it("renders all appearances", () => { Object.keys(InputAppearance).forEach(appearance => { const { asFragment } = render( ); expect(asFragment()).toMatchSnapshot(); }); }); it("renders a checkbox input type", () => { const { asFragment } = render( ); expect(asFragment()).toMatchSnapshot(); }); it("renders a radio input type", () => { const { asFragment } = render( ); expect(asFragment()).toMatchSnapshot(); }); it("calls onFocus if its passed in as a prop", () => { const focusFn = jest.fn(); const { getByTestId } = render( ); expect(focusFn).not.toHaveBeenCalled(); fireEvent.focus(getByTestId("checkboxInput-input")); expect(focusFn).toHaveBeenCalled(); }); it("calls onBlur if its passed in as a prop", () => { const blurFn = jest.fn(); const { getByTestId } = render( ); expect(blurFn).not.toHaveBeenCalled(); fireEvent.focus(getByTestId("checkboxInput-input")); expect(blurFn).not.toHaveBeenCalled(); fireEvent.blur(getByTestId("checkboxInput-input")); expect(blurFn).toHaveBeenCalled(); }); });