repositories / pi-ext
pi-ext
bugabingas pi extensions
owned by admin
extensions/web/__tests__/lazy.test.ts
Rawimport { describe, expect, it } from "vitest";
import { lazy } from "../lazy";
describe("lazy", () => {
it("shares one evaluation among concurrent callers", async () => {
let calls = 0;
let resolveLoad: (value: { ok: boolean }) => void = () => {};
const load = lazy(() => {
calls++;
return new Promise<{ ok: boolean }>((resolve) => {
resolveLoad = resolve;
});
});
const first = load();
const second = load();
resolveLoad({ ok: true });
await expect(first).resolves.toEqual({ ok: true });
await expect(second).resolves.toEqual({ ok: true });
expect(calls).toBe(1);
});
it("re-evaluates after a failed load", async () => {
let calls = 0;
const load = lazy(async () => {
calls++;
if (calls === 1) throw new Error("boom");
return calls;
});
await expect(load()).rejects.toThrow("boom");
await expect(load()).resolves.toBe(2);
});
});