import { renderHook } from "@testing-library/react";
import { describe, expect, it, vi } from "vitest";
import { useResize } from "./index";
describe("hook:useResize", () => {
    it("calls callback on window resize after debounce", async () => {
        let callback = vi.fn();
        renderHook(() => useResize(callback, { debounceTime: 10 }));
        window.dispatchEvent(new window.Event("resize"));
        expect(callback).toHaveBeenCalledTimes(0); // Should be debounced
        await new Promise(resolve => setTimeout(resolve, 50));
        expect(callback).toHaveBeenCalledTimes(1);
    });
    it("debounces multiple resize events", async () => {
        let callback = vi.fn();
        renderHook(() => useResize(callback, { debounceTime: 10 }));
        window.dispatchEvent(new window.Event("resize"));
        window.dispatchEvent(new window.Event("resize"));
        window.dispatchEvent(new window.Event("resize"));
        expect(callback).toHaveBeenCalledTimes(0);
        await new Promise(resolve => setTimeout(resolve, 50));
        expect(callback).toHaveBeenCalledTimes(1);
    });
});
