Iostream-Li's picture
Add files using upload-large-folder tool
ff78003 verified
Raw
History Blame Contribute Delete
1.98 kB
/**
* Router + adapter status — 验证:
* - getAdapterStatus 返回 7 类,4 类 real / 3 类 interface_only
* - logAdapterStatusBanner 真打 7 行
* - queryExternalKnowledge 路由到正确 adapter(用 stub 抛错验证)
*/
import test from "node:test";
import assert from "node:assert/strict";
import {
getAdapterStatus,
logAdapterStatusBanner,
queryExternalKnowledge,
NotImplementedAdapter,
} from "../index.ts";
test("getAdapterStatus — 7 类 + 4 real / 3 interface_only", () => {
const all = getAdapterStatus();
assert.equal(all.length, 7);
const reals = all.filter((a) => a.status === "real").map((a) => a.kind).sort();
const stubs = all.filter((a) => a.status === "interface_only").map((a) => a.kind).sort();
assert.deepEqual(reals, [
"causal_network",
"drug_network",
"internal_experience",
"literature",
]);
assert.deepEqual(stubs, ["code_models", "data", "user_uploads"]);
});
test("logAdapterStatusBanner — 真打 8 行(1 标题 + 7 适配器)", () => {
const lines: string[] = [];
logAdapterStatusBanner({ info: (m) => lines.push(m) });
assert.equal(lines.length, 8);
assert.match(lines[0]!, /adapter status/);
// 4 real + 3 interface_only
assert.equal(lines.filter((l) => l.includes("REAL")).length, 4);
assert.equal(lines.filter((l) => l.includes("interface_only")).length, 3);
});
test("queryExternalKnowledge — 路由到 stub adapter 抛 NotImplementedAdapter", async () => {
await assert.rejects(
() =>
queryExternalKnowledge({
kind: "code_models",
capabilityId: "cap_router",
params: {},
}),
NotImplementedAdapter,
);
});
test("queryExternalKnowledge — 未知 kind 抛 Error", async () => {
await assert.rejects(
() =>
queryExternalKnowledge({
// @ts-expect-error 故意传非法 kind
kind: "nonexistent",
capabilityId: "cap_router",
params: {},
}),
/unknown knowledge kind/,
);
});