import { describe, expect, it, vi } from "vitest"; import { registerSingleProviderPlugin } from "../../test/helpers/plugins/plugin-registration.js"; import openrouterPlugin from "./index.js"; describe("openrouter provider hooks", () => { it("owns native reasoning output mode", async () => { const provider = await registerSingleProviderPlugin(openrouterPlugin); expect( provider.resolveReasoningOutputMode?.({ provider: "openrouter", modelApi: "openai-completions", modelId: "openai/gpt-5.4", } as never), ).toBe("native"); }); it("injects provider routing into compat before applying stream wrappers", async () => { const provider = await registerSingleProviderPlugin(openrouterPlugin); const baseStreamFn = vi.fn(() => ({ async *[Symbol.asyncIterator]() {} }) as never); const wrapped = provider.wrapStreamFn?.({ provider: "openrouter", modelId: "openai/gpt-5.4", extraParams: { provider: { order: ["moonshot"], }, }, streamFn: baseStreamFn, thinkingLevel: "high", } as never); wrapped?.( { provider: "openrouter", api: "openai-completions", id: "openai/gpt-5.4", compat: {}, } as never, { messages: [] } as never, {}, ); expect(baseStreamFn).toHaveBeenCalledOnce(); expect(baseStreamFn.mock.calls[0]?.[0]).toMatchObject({ compat: { openRouterRouting: { order: ["moonshot"], }, }, }); }); });