From 1a52d943ed03a1febf91d3bbf882dc3f3c6e34f2 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Tue, 3 Mar 2026 02:05:36 +0000 Subject: [PATCH] refactor(tests): dedupe model compat assertions --- src/agents/model-compat.test.ts | 93 +++++++++++++-------------------- 1 file changed, 35 insertions(+), 58 deletions(-) diff --git a/src/agents/model-compat.test.ts b/src/agents/model-compat.test.ts index 13a6cc002d9..178552368ae 100644 --- a/src/agents/model-compat.test.ts +++ b/src/agents/model-compat.test.ts @@ -45,6 +45,22 @@ function createRegistry(models: Record>): ModelRegistry { } as ModelRegistry; } +function expectSupportsDeveloperRoleForcedOff(overrides?: Partial>): void { + const model = { ...baseModel(), ...overrides }; + delete (model as { compat?: unknown }).compat; + const normalized = normalizeModelCompat(model as Model); + expect(supportsDeveloperRole(normalized)).toBe(false); +} + +function expectResolvedForwardCompat( + model: Model | undefined, + expected: { provider: string; id: string }, +): void { + expect(model?.id).toBe(expected.id); + expect(model?.name).toBe(expected.id); + expect(model?.provider).toBe(expected.provider); +} + describe("normalizeModelCompat — Anthropic baseUrl", () => { const anthropicBase = (): Model => ({ @@ -106,54 +122,35 @@ describe("normalizeModelCompat — Anthropic baseUrl", () => { describe("normalizeModelCompat", () => { it("forces supportsDeveloperRole off for z.ai models", () => { - const model = baseModel(); - delete (model as { compat?: unknown }).compat; - const normalized = normalizeModelCompat(model); - expect(supportsDeveloperRole(normalized)).toBe(false); + expectSupportsDeveloperRoleForcedOff(); }); it("forces supportsDeveloperRole off for moonshot models", () => { - const model = { - ...baseModel(), + expectSupportsDeveloperRoleForcedOff({ provider: "moonshot", baseUrl: "https://api.moonshot.ai/v1", - }; - delete (model as { compat?: unknown }).compat; - const normalized = normalizeModelCompat(model); - expect(supportsDeveloperRole(normalized)).toBe(false); + }); }); it("forces supportsDeveloperRole off for custom moonshot-compatible endpoints", () => { - const model = { - ...baseModel(), + expectSupportsDeveloperRoleForcedOff({ provider: "custom-kimi", baseUrl: "https://api.moonshot.cn/v1", - }; - delete (model as { compat?: unknown }).compat; - const normalized = normalizeModelCompat(model); - expect(supportsDeveloperRole(normalized)).toBe(false); + }); }); it("forces supportsDeveloperRole off for DashScope provider ids", () => { - const model = { - ...baseModel(), + expectSupportsDeveloperRoleForcedOff({ provider: "dashscope", baseUrl: "https://dashscope.aliyuncs.com/compatible-mode/v1", - }; - delete (model as { compat?: unknown }).compat; - const normalized = normalizeModelCompat(model); - expect(supportsDeveloperRole(normalized)).toBe(false); + }); }); it("forces supportsDeveloperRole off for DashScope-compatible endpoints", () => { - const model = { - ...baseModel(), + expectSupportsDeveloperRoleForcedOff({ provider: "custom-qwen", baseUrl: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1", - }; - delete (model as { compat?: unknown }).compat; - const normalized = normalizeModelCompat(model); - expect(supportsDeveloperRole(normalized)).toBe(false); + }); }); it("leaves native api.openai.com model untouched", () => { @@ -168,35 +165,23 @@ describe("normalizeModelCompat", () => { }); it("forces supportsDeveloperRole off for Azure OpenAI (Chat Completions, not Responses API)", () => { - const model = { - ...baseModel(), + expectSupportsDeveloperRoleForcedOff({ provider: "azure-openai", baseUrl: "https://my-deployment.openai.azure.com/openai", - }; - delete (model as { compat?: unknown }).compat; - const normalized = normalizeModelCompat(model); - expect(supportsDeveloperRole(normalized)).toBe(false); + }); }); it("forces supportsDeveloperRole off for generic custom openai-completions provider", () => { - const model = { - ...baseModel(), + expectSupportsDeveloperRoleForcedOff({ provider: "custom-cpa", baseUrl: "https://cpa.example.com/v1", - }; - delete (model as { compat?: unknown }).compat; - const normalized = normalizeModelCompat(model); - expect(supportsDeveloperRole(normalized)).toBe(false); + }); }); it("forces supportsDeveloperRole off for Qwen proxy via openai-completions", () => { - const model = { - ...baseModel(), + expectSupportsDeveloperRoleForcedOff({ provider: "qwen-proxy", baseUrl: "https://qwen-api.example.org/compatible-mode/v1", - }; - delete (model as { compat?: unknown }).compat; - const normalized = normalizeModelCompat(model); - expect(supportsDeveloperRole(normalized)).toBe(false); + }); }); it("leaves openai-completions model with empty baseUrl untouched", () => { @@ -211,14 +196,10 @@ describe("normalizeModelCompat", () => { }); it("forces supportsDeveloperRole off for malformed baseUrl values", () => { - const model = { - ...baseModel(), + expectSupportsDeveloperRoleForcedOff({ provider: "custom-cpa", baseUrl: "://api.openai.com malformed", - }; - delete (model as { compat?: unknown }).compat; - const normalized = normalizeModelCompat(model); - expect(supportsDeveloperRole(normalized)).toBe(false); + }); }); it("overrides explicit supportsDeveloperRole true on non-native endpoints", () => { @@ -271,9 +252,7 @@ describe("resolveForwardCompatModel", () => { "anthropic/claude-opus-4-5": createTemplateModel("anthropic", "claude-opus-4-5"), }); const model = resolveForwardCompatModel("anthropic", "claude-opus-4-6", registry); - expect(model?.id).toBe("claude-opus-4-6"); - expect(model?.name).toBe("claude-opus-4-6"); - expect(model?.provider).toBe("anthropic"); + expectResolvedForwardCompat(model, { provider: "anthropic", id: "claude-opus-4-6" }); }); it("resolves anthropic sonnet 4.6 dot variant with suffix", () => { @@ -284,9 +263,7 @@ describe("resolveForwardCompatModel", () => { ), }); const model = resolveForwardCompatModel("anthropic", "claude-sonnet-4.6-20260219", registry); - expect(model?.id).toBe("claude-sonnet-4.6-20260219"); - expect(model?.name).toBe("claude-sonnet-4.6-20260219"); - expect(model?.provider).toBe("anthropic"); + expectResolvedForwardCompat(model, { provider: "anthropic", id: "claude-sonnet-4.6-20260219" }); }); it("does not resolve anthropic 4.6 fallback for other providers", () => {