import React from "react"; import { createSerializer } from "@emotion/jest"; import { render } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { CodeSnippet } from "../"; expect.addSnapshotSerializer(createSerializer()); const snippetContent = "snippet content"; jest.mock("copy-to-clipboard", () => jest.fn()); describe("CodeSnippet", () => { it("renders default", () => { const { asFragment } = render({snippetContent}); expect(asFragment()).toMatchSnapshot(); }); it("renders with copy button", () => { const { asFragment } = render( {snippetContent} ); expect(asFragment()).toMatchSnapshot(); }); it("calls onCopy when copy button is clicked ", async () => { const user = userEvent.setup(); const onCopyFn = jest.fn(); const { getByRole } = render( {snippetContent} ); const copyButton = getByRole("button"); expect(onCopyFn).not.toHaveBeenCalled(); await user.click(copyButton); expect(onCopyFn).toHaveBeenCalled(); }); });