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

74 lines
3.4 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
const {
shouldRequestClaudeFastMode,
CLAUDE_FAST_MODE_DEFAULT_MODELS,
getClaudeFastModeSupportedModels,
isClaudeFastModeEnabled,
} = await import("../../src/lib/providers/claudeFastMode.ts");
const enabledSettings = { claudeFastMode: true };
const disabledSettings = { claudeFastMode: false };
test("shouldRequestClaudeFastMode returns false when fast mode is disabled", () => {
assert.equal(shouldRequestClaudeFastMode(disabledSettings, "claude-opus-4-8"), false);
assert.equal(shouldRequestClaudeFastMode({}, "claude-opus-4-8"), false);
assert.equal(shouldRequestClaudeFastMode(null, "claude-opus-4-8"), false);
});
test("shouldRequestClaudeFastMode returns false for non-string or empty modelId", () => {
assert.equal(shouldRequestClaudeFastMode(enabledSettings, null), false);
assert.equal(shouldRequestClaudeFastMode(enabledSettings, undefined), false);
assert.equal(shouldRequestClaudeFastMode(enabledSettings, ""), false);
});
test("shouldRequestClaudeFastMode returns true for claude-opus-4-8 exact match", () => {
assert.equal(shouldRequestClaudeFastMode(enabledSettings, "claude-opus-4-8"), true);
});
test("shouldRequestClaudeFastMode prefix-matches claude-opus-4-8 with dated suffix", () => {
assert.equal(shouldRequestClaudeFastMode(enabledSettings, "claude-opus-4-8-20260528"), true);
assert.equal(shouldRequestClaudeFastMode(enabledSettings, "claude-opus-4-8-20260101"), true);
});
test("shouldRequestClaudeFastMode returns true for claude-opus-4-7 and claude-opus-4-6", () => {
assert.equal(shouldRequestClaudeFastMode(enabledSettings, "claude-opus-4-7"), true);
assert.equal(shouldRequestClaudeFastMode(enabledSettings, "claude-opus-4-6"), true);
assert.equal(shouldRequestClaudeFastMode(enabledSettings, "claude-opus-4-7-20250101"), true);
});
test("shouldRequestClaudeFastMode returns false for non-Opus models", () => {
assert.equal(shouldRequestClaudeFastMode(enabledSettings, "claude-sonnet-4-6"), false);
assert.equal(shouldRequestClaudeFastMode(enabledSettings, "claude-haiku-4-5"), false);
assert.equal(shouldRequestClaudeFastMode(enabledSettings, "gpt-4o"), false);
});
test("CLAUDE_FAST_MODE_DEFAULT_MODELS includes claude-opus-4-8", () => {
assert.ok(
CLAUDE_FAST_MODE_DEFAULT_MODELS.includes("claude-opus-4-8"),
"claude-opus-4-8 must be in CLAUDE_FAST_MODE_DEFAULT_MODELS"
);
});
test("getClaudeFastModeSupportedModels returns default list when none configured", () => {
const models = getClaudeFastModeSupportedModels({});
assert.ok(models.includes("claude-opus-4-8"));
assert.ok(models.includes("claude-opus-4-7"));
assert.ok(models.includes("claude-opus-4-6"));
});
test("getClaudeFastModeSupportedModels respects custom override list", () => {
const settings = { claudeFastMode: { enabled: true, supportedModels: ["my-custom-model"] } };
const models = getClaudeFastModeSupportedModels(settings);
assert.deepEqual(models, ["my-custom-model"]);
});
test("isClaudeFastModeEnabled handles boolean and object shape", () => {
assert.equal(isClaudeFastModeEnabled({ claudeFastMode: true }), true);
assert.equal(isClaudeFastModeEnabled({ claudeFastMode: false }), false);
assert.equal(isClaudeFastModeEnabled({ claudeFastMode: { enabled: true } }), true);
assert.equal(isClaudeFastModeEnabled({ claudeFastMode: { enabled: false } }), false);
assert.equal(isClaudeFastModeEnabled({}), false);
});