Files
diegosouzapw--omniroute/tests/unit/connection-model-rules.test.ts
2026-07-13 13:39:12 +08:00

48 lines
1.7 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
import {
getConnectionExcludedModels,
hasEligibleConnectionForModel,
isModelExcludedByConnection,
normalizeExcludedModelPatterns,
} from "../../src/domain/connectionModelRules.ts";
test("normalizeExcludedModelPatterns accepts arrays and CSV strings, trims values, and removes duplicates", () => {
assert.deepEqual(normalizeExcludedModelPatterns([" gpt-4o* ", "gpt-4o*", "", "**"]), ["gpt-4o*"]);
assert.deepEqual(normalizeExcludedModelPatterns("gpt-4.1*, gpt-4o*, gpt-4.1*"), [
"gpt-4.1*",
"gpt-4o*",
]);
});
test("isModelExcludedByConnection matches both provider-scoped and raw model ids", () => {
const providerSpecificData = {
excludedModels: ["gpt-4o*", "claude-opus-*"],
};
assert.equal(isModelExcludedByConnection("openai/gpt-4o-mini", providerSpecificData), true);
assert.equal(isModelExcludedByConnection("gpt-4o-mini", providerSpecificData), true);
assert.equal(isModelExcludedByConnection("claude-sonnet-4-5", providerSpecificData), false);
});
test("hasEligibleConnectionForModel only returns true when at least one connection can serve the model", () => {
const connections = [
{ providerSpecificData: { excludedModels: ["gpt-4o*"] } },
{ providerSpecificData: { excludedModels: ["gpt-4.1*"] } },
];
assert.equal(hasEligibleConnectionForModel(connections, "gpt-4o-mini"), true);
assert.equal(
hasEligibleConnectionForModel(
[
{ providerSpecificData: { excludedModels: ["gpt-4o*"] } },
{ providerSpecificData: { excludedModels: ["gpt-4o-mini"] } },
],
"gpt-4o-mini"
),
false
);
assert.deepEqual(getConnectionExcludedModels({ excluded_models: ["gpt-4o*"] }), ["gpt-4o*"]);
});