/** * test/adapter-factory.test.ts * * Testes unitários para a AdapterFactory. */ import { describe, it } from "node:test"; import assert from "node:assert/strict"; import { createSchedulingAdapter } from "../src/adapters/adapter-factory.js"; import { ZProAdapter } from "../src/adapters/zpro/zpro.adapter.js"; import { KlingoAdapter } from "../src/adapters/klingo/klingo.adapter.js"; import type { SchedulingProviderConfig } from "../src/config/config.types.js"; describe("createSchedulingAdapter", () => { it("cria um ZProAdapter quando o provider é 'zpro'", () => { const adapter = createSchedulingAdapter({ provider: "zpro", baseUrl: "https://zpro.example.com", apiToken: "token-secreto", apiId: "api-1", }); assert.ok(adapter instanceof ZProAdapter); }); it("cria um KlingoAdapter quando o provider é 'klingo'", () => { const adapter = createSchedulingAdapter({ provider: "klingo", baseUrl: "https://klingo.example.com", appToken: "app-token-secreto", }); assert.ok(adapter instanceof KlingoAdapter); }); it("rejeita um provider desconhecido", () => { const unsupported = { provider: "syslife", baseUrl: "https://syslife.example.com", } as unknown as SchedulingProviderConfig; assert.throws( () => createSchedulingAdapter(unsupported), (error: unknown) => { assert.ok(error instanceof Error); assert.match(error.message, /não suportado/); return true; }, ); }); });