Files
diegosouzapw--omniroute/tests/unit/resolve-bare-model-to-connection-default-474.test.ts
2026-07-13 13:39:12 +08:00

44 lines
1.9 KiB
TypeScript

import { test } from "node:test";
import assert from "node:assert/strict";
import { resolveBareModelToConnectionDefault } from "@omniroute/open-sse/services/model.ts";
// #474 — When a bare model name (no "/") reaches the upstream call and the
// selected connection declares a defaultModel, the bare name must resolve to
// that real model ID. A "/"-qualified model name is an explicit provider/model
// choice and must always be left untouched.
test("bare model name resolves to the connection defaultModel", () => {
// "auto" came from an alias; the connection's defaultModel is the concrete ID.
const effective = resolveBareModelToConnectionDefault("auto", "auto", "gpt-4o-mini");
assert.equal(effective, "gpt-4o-mini");
});
test('"/"-qualified model name is left untouched even when a defaultModel exists', () => {
const effective = resolveBareModelToConnectionDefault(
"openai/gpt-4o",
"gpt-4o",
"gpt-4o-mini"
);
assert.equal(effective, "gpt-4o");
});
test("bare model name without a connection defaultModel falls back to the resolved model", () => {
assert.equal(resolveBareModelToConnectionDefault("auto", "auto", null), "auto");
assert.equal(resolveBareModelToConnectionDefault("auto", "auto", undefined), "auto");
assert.equal(resolveBareModelToConnectionDefault("auto", "auto", ""), "auto");
});
test("empty defaultModel string does not override the resolved model", () => {
assert.equal(resolveBareModelToConnectionDefault("auto", "resolved-auto", ""), "resolved-auto");
});
test("null/undefined requested model strings are treated as non-bare (no override)", () => {
assert.equal(resolveBareModelToConnectionDefault(null, "resolved", "default"), "resolved");
assert.equal(resolveBareModelToConnectionDefault(undefined, "resolved", "default"), "resolved");
});
test("null resolved model with no defaultModel returns null", () => {
assert.equal(resolveBareModelToConnectionDefault("auto", null, null), null);
});