import { renderHook } from "@testing-library/react";
import { describe, expect, it, vi } from "vitest";
import { useOutsideClick } from "./index";
describe("hook:useOutsideClick", () => {
    it("calls callback when clicking outside", () => {
        let callback = vi.fn();
        let { result } = renderHook(() => useOutsideClick(callback));
        let element = document.createElement("div");
        result.current.current = element;
        document.body.appendChild(element);
        let outsideElement = document.createElement("div");
        document.body.appendChild(outsideElement);
        let event = new PointerEvent("pointerdown", { bubbles: true, composed: true });
        outsideElement.dispatchEvent(event);
        expect(callback).toHaveBeenCalledTimes(1);
        document.body.removeChild(element);
        document.body.removeChild(outsideElement);
    });
    it("does not call callback when clicking inside", () => {
        let callback = vi.fn();
        let { result } = renderHook(() => useOutsideClick(callback));
        let element = document.createElement("div");
        result.current.current = element;
        document.body.appendChild(element);
        let event = new PointerEvent("pointerdown", { bubbles: true, composed: true });
        element.dispatchEvent(event);
        expect(callback).toHaveBeenCalledTimes(0);
        document.body.removeChild(element);
    });
});
