import { renderHook } from "@testing-library/react";
import { describe, expect, it, vi } from "vitest";
import { useLongPress } from "./index";
describe("useLongPress", () => {
    it("should trigger onLongPress after delay", () => {
        vi.useFakeTimers();
        let onLongPress = vi.fn();
        let { result } = renderHook(() => useLongPress(onLongPress, { delay: 100 }));
        let element = document.createElement("div");
        // Simulate pointer down
        // We need to manually call the handler because we are testing the hook logic, not the component binding directly
        // But wait, the hook returns props.
        // Let's simulate the event flow
        let pointerDownEvent = {
            target: element,
            preventDefault: vi.fn(),
        };
        result.current.onPointerDown(pointerDownEvent);
        vi.advanceTimersByTime(100);
        expect(onLongPress).toHaveBeenCalledTimes(1);
        vi.useRealTimers();
    });
    it("should not trigger if released early", () => {
        vi.useFakeTimers();
        let onLongPress = vi.fn();
        let { result } = renderHook(() => useLongPress(onLongPress, { delay: 100 }));
        let pointerDownEvent = {
            target: document.createElement("div"),
            preventDefault: vi.fn(),
        };
        result.current.onPointerDown(pointerDownEvent);
        vi.advanceTimersByTime(50);
        result.current.onPointerUp({});
        vi.advanceTimersByTime(50);
        expect(onLongPress).toHaveBeenCalledTimes(0);
        vi.useRealTimers();
    });
});
