132 lines
3.1 KiB
TypeScript
132 lines
3.1 KiB
TypeScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
|
|
const { buildComboTestRequestBody, extractComboTestResponseText } =
|
|
await import("../../src/lib/combos/testHealth.ts");
|
|
|
|
test("combo test helper builds a realistic smoke payload", () => {
|
|
const originalRandom = Math.random;
|
|
let callCount = 0;
|
|
let body;
|
|
try {
|
|
Math.random = () => {
|
|
callCount += 1;
|
|
return callCount === 1 ? 0.4680222223 : 0.2677;
|
|
};
|
|
|
|
body = buildComboTestRequestBody("openrouter/openai/gpt-5.4");
|
|
} finally {
|
|
Math.random = originalRandom;
|
|
}
|
|
|
|
assert.equal(body.model, "openrouter/openai/gpt-5.4");
|
|
assert.equal(body.messages[0].content, "Calculate 52122+34093, and reply with the result only.");
|
|
assert.equal(body.max_tokens, 2048);
|
|
assert.equal("temperature" in body, false);
|
|
assert.equal(body.stream, false);
|
|
});
|
|
|
|
test("combo test helper extracts text from chat-completions responses", () => {
|
|
const text = extractComboTestResponseText({
|
|
choices: [
|
|
{
|
|
message: {
|
|
role: "assistant",
|
|
content: "OK",
|
|
},
|
|
},
|
|
],
|
|
});
|
|
|
|
assert.equal(text, "OK");
|
|
});
|
|
|
|
test("combo test helper extracts text from block-based responses", () => {
|
|
const text = extractComboTestResponseText({
|
|
choices: [
|
|
{
|
|
message: {
|
|
role: "assistant",
|
|
content: [
|
|
{ type: "text", text: "OK" },
|
|
{ type: "output_text", text: "Confirmed." },
|
|
],
|
|
},
|
|
},
|
|
],
|
|
});
|
|
|
|
assert.equal(text, "OK\nConfirmed.");
|
|
});
|
|
|
|
test("combo test helper extracts reasoning content when visible text is absent", () => {
|
|
const text = extractComboTestResponseText({
|
|
choices: [
|
|
{
|
|
message: {
|
|
role: "assistant",
|
|
content: null,
|
|
reasoning_content: "Working through the request.\nOK",
|
|
},
|
|
},
|
|
],
|
|
});
|
|
|
|
assert.equal(text, "Working through the request.\nOK");
|
|
});
|
|
|
|
test("combo test helper extracts reasoning_text aliases from GitHub-style responses", () => {
|
|
const text = extractComboTestResponseText({
|
|
choices: [
|
|
{
|
|
message: {
|
|
role: "assistant",
|
|
content: "",
|
|
reasoning_text: "Reasoning trace",
|
|
},
|
|
},
|
|
],
|
|
});
|
|
|
|
assert.equal(text, "Reasoning trace");
|
|
});
|
|
|
|
test("combo test helper treats reasoning-only completions as a healthy signal", () => {
|
|
const text = extractComboTestResponseText({
|
|
choices: [
|
|
{
|
|
finish_reason: "length",
|
|
message: {
|
|
role: "assistant",
|
|
content: "",
|
|
},
|
|
},
|
|
],
|
|
usage: {
|
|
prompt_tokens: 6,
|
|
completion_tokens: 12,
|
|
total_tokens: 18,
|
|
completion_tokens_details: {
|
|
reasoning_tokens: 12,
|
|
},
|
|
},
|
|
});
|
|
|
|
assert.equal(text, "[reasoning-only completion]");
|
|
});
|
|
|
|
test("combo test helper returns empty string when no text content exists", () => {
|
|
const text = extractComboTestResponseText({
|
|
choices: [
|
|
{
|
|
message: {
|
|
role: "assistant",
|
|
content: [{ type: "tool_call", id: "call_1" }],
|
|
},
|
|
},
|
|
],
|
|
});
|
|
|
|
assert.equal(text, "");
|
|
});
|