import { describe, expect, it } from "vitest"; import { MetadataProvider } from "./metadata.types.js"; import { ResolveProviderChain } from "./use-cases/resolve-provider-chain.js"; const provider = (id: MetadataProvider["id"]): MetadataProvider => ({ id, lookup: async () => null, searchByMetadata: async () => [] }); describe("ResolveProviderChain", () => { it("keeps local active and orders enabled remote providers by priority", () => { const chain = new ResolveProviderChain([provider("googlebooks"), provider("local"), provider("bnf")]).resolve([ { provider: "local", enabled: false, priority: 99, apiKey: null }, { provider: "googlebooks", enabled: true, priority: 2, apiKey: null }, { provider: "bnf", enabled: true, priority: 1, apiKey: null } ]); expect(chain.map((entry) => entry.provider.id)).toEqual(["bnf", "googlebooks", "local"]); }); });