69 lines
1.9 KiB
TypeScript
69 lines
1.9 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
buildOmoProfilePreview,
|
|
buildOmoSlimProfilePreview,
|
|
OMO_SLIM_BUILTIN_AGENTS,
|
|
OMO_SLIM_DISABLEABLE_AGENTS,
|
|
parseOmoOtherFieldsObject,
|
|
} from "@/types/omo";
|
|
|
|
describe("parseOmoOtherFieldsObject", () => {
|
|
it("解析对象 JSON", () => {
|
|
expect(parseOmoOtherFieldsObject('{ "foo": 1 }')).toEqual({ foo: 1 });
|
|
});
|
|
|
|
it("数组/字符串返回 undefined", () => {
|
|
expect(parseOmoOtherFieldsObject('["a"]')).toBeUndefined();
|
|
expect(parseOmoOtherFieldsObject('"hello"')).toBeUndefined();
|
|
});
|
|
|
|
it("非法 JSON 抛出异常", () => {
|
|
expect(() => parseOmoOtherFieldsObject("{")).toThrow();
|
|
});
|
|
});
|
|
|
|
describe("buildOmoProfilePreview", () => {
|
|
it("只合并 otherFields 的对象值,忽略数组", () => {
|
|
const fromArray = buildOmoProfilePreview({}, {}, '["a", "b"]');
|
|
expect(fromArray).toEqual({});
|
|
|
|
const fromObject = buildOmoProfilePreview({}, {}, '{ "foo": "bar" }');
|
|
expect(fromObject).toEqual({ foo: "bar" });
|
|
});
|
|
});
|
|
|
|
describe("buildOmoSlimProfilePreview", () => {
|
|
it("保留 top-level council 配置,同时写入 council agent 模型", () => {
|
|
const preview = buildOmoSlimProfilePreview(
|
|
{
|
|
council: { model: "openai/gpt-5.4-mini" },
|
|
},
|
|
'{ "council": { "default_preset": "default" }, "fallback": { "enabled": true } }',
|
|
);
|
|
|
|
expect(preview).toEqual({
|
|
council: { default_preset: "default" },
|
|
fallback: { enabled: true },
|
|
agents: {
|
|
council: { model: "openai/gpt-5.4-mini" },
|
|
},
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("OMO Slim metadata", () => {
|
|
it("将 council 视为内置且可禁用的 agent", () => {
|
|
expect(OMO_SLIM_BUILTIN_AGENTS).toContainEqual(
|
|
expect.objectContaining({
|
|
key: "council",
|
|
display: "Council",
|
|
group: "sub",
|
|
}),
|
|
);
|
|
expect(OMO_SLIM_DISABLEABLE_AGENTS).toContainEqual({
|
|
value: "council",
|
|
label: "Council",
|
|
});
|
|
});
|
|
});
|