Snapshot: gti-scheduling-mcp (Z-PRO + Klingo adapters) e workflow n8n de agendamento funcionando de ponta a ponta
- gti-scheduling-mcp: MCP server com ZProAdapter e KlingoAdapter (agendar() completo pros dois) - Workflow n8n 'Agendamento - GChat - Z-PRO': webhook -> AI Agent -> MCP -> Z-PRO, testado com sucesso real - Documentacao: specs, plano, runbook de problemas reais e export do workflow Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
/**
|
||||
* 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;
|
||||
},
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user