Spaces:
Build error
Build error
| import { render, screen } from "@testing-library/react"; | |
| import userEvent from "@testing-library/user-event"; | |
| import { expect, test, vi } from "vitest"; | |
| import { useClickOutsideElement } from "#/hooks/use-click-outside-element"; | |
| interface ClickOutsideTestComponentProps { | |
| callback: () => void; | |
| } | |
| function ClickOutsideTestComponent({ | |
| callback, | |
| }: ClickOutsideTestComponentProps) { | |
| const ref = useClickOutsideElement<HTMLDivElement>(callback); | |
| return ( | |
| <div> | |
| <div data-testid="inside-element" ref={ref} /> | |
| <div data-testid="outside-element" /> | |
| </div> | |
| ); | |
| } | |
| test("call the callback when the element is clicked outside", async () => { | |
| const user = userEvent.setup(); | |
| const callback = vi.fn(); | |
| render(<ClickOutsideTestComponent callback={callback} />); | |
| const insideElement = screen.getByTestId("inside-element"); | |
| const outsideElement = screen.getByTestId("outside-element"); | |
| await user.click(insideElement); | |
| expect(callback).not.toHaveBeenCalled(); | |
| await user.click(outsideElement); | |
| expect(callback).toHaveBeenCalled(); | |
| }); | |