mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-11 12:41:42 +00:00
61 lines
2.0 KiB
TypeScript
61 lines
2.0 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { pickFallbackThinkingLevel } from "./thinking.js";
|
|
|
|
describe("pickFallbackThinkingLevel", () => {
|
|
it("returns undefined for empty message", () => {
|
|
expect(pickFallbackThinkingLevel({ message: "", attempted: new Set() })).toBeUndefined();
|
|
});
|
|
|
|
it("returns undefined for undefined message", () => {
|
|
expect(pickFallbackThinkingLevel({ message: undefined, attempted: new Set() })).toBeUndefined();
|
|
});
|
|
|
|
it("extracts supported values from error message", () => {
|
|
const result = pickFallbackThinkingLevel({
|
|
message: 'Supported values are: "high", "medium"',
|
|
attempted: new Set(),
|
|
});
|
|
expect(result).toBe("high");
|
|
});
|
|
|
|
it("skips already attempted values", () => {
|
|
const result = pickFallbackThinkingLevel({
|
|
message: 'Supported values are: "high", "medium"',
|
|
attempted: new Set(["high"]),
|
|
});
|
|
expect(result).toBe("medium");
|
|
});
|
|
|
|
it('falls back to "off" when error says "not supported" without listing values', () => {
|
|
const result = pickFallbackThinkingLevel({
|
|
message: '400 think value "low" is not supported for this model',
|
|
attempted: new Set(),
|
|
});
|
|
expect(result).toBe("off");
|
|
});
|
|
|
|
it('falls back to "off" for generic not-supported messages', () => {
|
|
const result = pickFallbackThinkingLevel({
|
|
message: "thinking level not supported by this provider",
|
|
attempted: new Set(),
|
|
});
|
|
expect(result).toBe("off");
|
|
});
|
|
|
|
it('returns undefined if "off" was already attempted', () => {
|
|
const result = pickFallbackThinkingLevel({
|
|
message: '400 think value "low" is not supported for this model',
|
|
attempted: new Set(["off"]),
|
|
});
|
|
expect(result).toBeUndefined();
|
|
});
|
|
|
|
it("returns undefined for unrelated error messages", () => {
|
|
const result = pickFallbackThinkingLevel({
|
|
message: "rate limit exceeded, please retry after 30 seconds",
|
|
attempted: new Set(),
|
|
});
|
|
expect(result).toBeUndefined();
|
|
});
|
|
});
|