Files
2026-07-13 13:39:12 +08:00

74 lines
2.5 KiB
TypeScript

// tests/unit/combo/combo-exhausted-skip.test.ts
// Characterization of getExhaustedTargetSkipReason — the de-duplicated #1731/#1731v2
// pre-dispatch skip predicate shared by both combo dispatchers (handleComboChat +
// handleRoundRobinCombo). Locks the exact skip conditions + message strings.
import { test } from "node:test";
import assert from "node:assert/strict";
import { getExhaustedTargetSkipReason } from "../../../open-sse/services/combo/comboPredicates.ts";
function target(overrides: Record<string, unknown> = {}) {
return {
kind: "model",
executionKey: "ek",
modelStr: "openai/gpt-4o",
provider: "openai",
providerId: null,
connectionId: "conn-1",
...overrides,
} as Parameters<typeof getExhaustedTargetSkipReason>[0];
}
test("returns null when nothing is exhausted", () => {
assert.equal(getExhaustedTargetSkipReason(target(), new Set(), new Set()), null);
});
test("#1731v2: skips when the provider:connection pair is in exhaustedConnections", () => {
const reason = getExhaustedTargetSkipReason(target(), new Set(), new Set(["openai:conn-1"]));
assert.equal(
reason,
"Skipping openai/gpt-4o — connection conn-1 for provider openai had connection error (#1731v2)"
);
});
test("#1731: skips when the provider is in exhaustedProviders", () => {
const reason = getExhaustedTargetSkipReason(target(), new Set(["openai"]), new Set());
assert.equal(
reason,
"Skipping openai/gpt-4o — provider openai marked exhausted this request (#1731)"
);
});
test("connection exhaustion takes precedence over provider exhaustion", () => {
const reason = getExhaustedTargetSkipReason(
target(),
new Set(["openai"]),
new Set(["openai:conn-1"])
);
assert.ok(reason?.includes("(#1731v2)"));
});
test("a different connection of an exhausted pair is NOT skipped on the connection check", () => {
const reason = getExhaustedTargetSkipReason(
target({ connectionId: "conn-2" }),
new Set(),
new Set(["openai:conn-1"])
);
assert.equal(reason, null);
});
test("no connectionId: only the provider-level check applies", () => {
assert.equal(getExhaustedTargetSkipReason(target({ connectionId: null }), new Set(), new Set()), null);
assert.ok(
getExhaustedTargetSkipReason(target({ connectionId: null }), new Set(["openai"]), new Set())?.includes(
"(#1731)"
)
);
});
test("empty provider string is treated as falsy (no skip)", () => {
assert.equal(
getExhaustedTargetSkipReason(target({ provider: "" }), new Set([""]), new Set([":conn-1"])),
null
);
});