import { mkdtemp, rm } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; import { clearStorageProviders, createStorage, hasStorageProvider, } from "@suaveplan/storage/factory"; import { afterEach, beforeEach, describe, expect, it, } from "@suaveplan/testing/runner"; import { NodeFsStorage } from "../node-fs-storage/node-fs-storage.js"; import { registerNodeFsProvider } from "./registry.js"; describe("registerNodeFsProvider", () => { let root: string; beforeEach(async () => { root = await mkdtemp(join(tmpdir(), "nfs-registry-")); clearStorageProviders(); }); afterEach(async () => { clearStorageProviders(); await rm(root, { recursive: true, force: true }); }); it("registers the file provider and resolves it via createStorage", { timeout: 10000, }, async () => { registerNodeFsProvider(); expect(hasStorageProvider("file")).toBe(true); const storage = createStorage({ type: "file" as never, config: { rootDir: root } as never, }); expect(storage).toBeInstanceOf(NodeFsStorage); await storage.set("k", new Uint8Array([1])); expect(await storage.get("k")).toEqual(new Uint8Array([1])); }); it("is idempotent across repeated registerNodeFsProvider calls", { timeout: 5000, }, () => { registerNodeFsProvider(); registerNodeFsProvider(); registerNodeFsProvider(); expect(hasStorageProvider("file")).toBe(true); }); });