Rl-Auto / apps /web-legacy /src /test /settings.test.ts
Lazywords's picture
Clamp analysis token settings
67b9551
Raw
History Blame Contribute Delete
2.87 kB
import { describe, expect, it } from "vitest";
import { DEFAULT_SETTINGS, sanitizeSettings } from "../settings";
import { buildOptionsSnapshot } from "../lib/analysisClient";
describe("web settings defaults", () => {
it("defaults polish to browser direct and analysis to backend queue", () => {
expect(DEFAULT_SETTINGS.polishTransport).toBe("browser");
expect(DEFAULT_SETTINGS.analysisTransport).toBe("backend");
expect(DEFAULT_SETTINGS.apiMode).toBe("chat");
expect(DEFAULT_SETTINGS.baseURL).toBe("https://api.deepseek.com");
expect(DEFAULT_SETTINGS.modelPreset).toBe("deepseek-v4-pro");
});
it("normalizes old or unexpected analysis transports back to backend", () => {
const settings = sanitizeSettings({
analysisTransport: "browser" as never,
polishTransport: "backend" as never,
modelPreset: "deepseek-v4-pro",
});
expect(settings.analysisTransport).toBe("backend");
expect(settings.polishTransport).toBe("browser");
});
it("stores reusable browser model credentials", () => {
const settings = sanitizeSettings({
savedModelCredentials: [
{ id: "deepseek", name: "DeepSeek", baseURL: "https://api.deepseek.com", apiKey: "key-1" },
{ id: "empty", name: "Empty", baseURL: "", apiKey: "" },
],
selectedModelCredentialId: "deepseek",
});
expect(settings.savedModelCredentials).toEqual([
{ id: "deepseek", name: "DeepSeek", baseURL: "https://api.deepseek.com", apiKey: "key-1" },
]);
expect(settings.selectedModelCredentialId).toBe("deepseek");
});
it("builds backend analysis options without browser-only transport fields", () => {
const snapshot = buildOptionsSnapshot(DEFAULT_SETTINGS, {
kind: "api",
optimizeTask: true,
strictFullMarks: false,
ignoreTaskComplexityForFullMarks: false,
feedback: "focus on channel state",
});
expect(snapshot).toMatchObject({
requestedMode: "api",
model: "deepseek-v4-pro",
baseURL: "https://api.deepseek.com",
apiMode: "chat",
feedback: "focus on channel state",
});
expect(snapshot).not.toHaveProperty("polishTransport");
expect(snapshot).not.toHaveProperty("analysisTransport");
expect(snapshot).not.toHaveProperty("streaming");
});
it("clamps backend analysis numeric options before sending", () => {
const snapshot = buildOptionsSnapshot(
{
...DEFAULT_SETTINGS,
concurrency: 99,
temperature: 9,
topP: 9,
maxTokens: 999999,
},
{
kind: "api",
optimizeTask: true,
strictFullMarks: false,
ignoreTaskComplexityForFullMarks: false,
feedback: "",
},
);
expect(snapshot).toMatchObject({
concurrency: 8,
temperature: 2,
topP: 1,
maxTokens: 131072,
});
});
});