import { describe, it, expect, vi, beforeEach } from 'vitest'; import { loadProvider } from '../src/providers/provider.mjs'; import { OllamaProvider } from '../src/providers/ollama_provider.mjs'; import { OpenAIProvider } from '../src/providers/openai_provider.mjs'; import { HttpProvider } from '../src/providers/http_provider.mjs'; vi.stubGlobal("fetch", vi.fn(async () => ({ ok: true, json: async () => ({ response: "OK" }) }))); describe("provider system", () => { beforeEach(() => { vi.clearAllMocks(); }); it("loads Ollama provider", () => { process.env.PROVIDER_TYPE = "ollama"; const p = loadProvider(); expect(p).toBeInstanceOf(OllamaProvider); }); it("loads OpenAI provider", () => { process.env.PROVIDER_TYPE = "openai"; process.env.OPENAI_API_KEY = "test"; const p = loadProvider(); expect(p).toBeInstanceOf(OpenAIProvider); }); it("loads HTTP provider", () => { process.env.PROVIDER_TYPE = "http"; const p = loadProvider(); expect(p).toBeInstanceOf(HttpProvider); }); it("provider.generate() returns mocked content", async () => { process.env.PROVIDER_TYPE = "ollama"; const p = loadProvider(); const out = await p.generate("hello"); expect(out).toBe("OK"); }); });