import { renderHook } from "@testing-library/react";
import { describe, expect, it, vi } from "vitest";
import { useAsyncEffect } from "./index";
describe("useAsyncEffect", () => {
    it("should execute the effect", async () => {
        let fn = vi.fn(async () => { });
        renderHook(() => useAsyncEffect(fn));
        // Wait for effect
        await new Promise((resolve) => setTimeout(resolve, 0));
        expect(fn).toHaveBeenCalledTimes(1);
    });
    it("should abort on unmount", async () => {
        let abortSignal;
        let fn = vi.fn(async (signal) => {
            abortSignal = signal;
        });
        let { unmount } = renderHook(() => useAsyncEffect(fn));
        // Wait for effect
        await new Promise((resolve) => setTimeout(resolve, 0));
        unmount();
        expect(abortSignal?.aborted).toBeTruthy();
    });
});
