74 lines
3.4 KiB
TypeScript
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);
|
|
});
|