mirror of
https://gitee.com/wanwujie/sub2api
synced 2026-05-04 21:20:51 +08:00
95 lines
2.8 KiB
TypeScript
95 lines
2.8 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import {
|
|
createDefaultMessagesDispatchFormState,
|
|
messagesDispatchConfigToFormState,
|
|
messagesDispatchFormStateToConfig,
|
|
resetMessagesDispatchFormState,
|
|
} from "../groupsMessagesDispatch";
|
|
|
|
describe("groupsMessagesDispatch", () => {
|
|
it("returns the expected default form state", () => {
|
|
expect(createDefaultMessagesDispatchFormState()).toEqual({
|
|
allow_messages_dispatch: false,
|
|
opus_mapped_model: "gpt-5.4",
|
|
sonnet_mapped_model: "gpt-5.3-codex",
|
|
haiku_mapped_model: "gpt-5.4-mini",
|
|
exact_model_mappings: [],
|
|
});
|
|
});
|
|
|
|
it("sanitizes exact model mapping rows when converting to config", () => {
|
|
const config = messagesDispatchFormStateToConfig({
|
|
allow_messages_dispatch: true,
|
|
opus_mapped_model: " gpt-5.4 ",
|
|
sonnet_mapped_model: "gpt-5.3-codex",
|
|
haiku_mapped_model: " gpt-5.4-mini ",
|
|
exact_model_mappings: [
|
|
{
|
|
claude_model: " claude-sonnet-4-5-20250929 ",
|
|
target_model: " gpt-5.2 ",
|
|
},
|
|
{ claude_model: "", target_model: "gpt-5.4" },
|
|
{ claude_model: "claude-opus-4-6", target_model: " " },
|
|
],
|
|
});
|
|
|
|
expect(config).toEqual({
|
|
opus_mapped_model: "gpt-5.4",
|
|
sonnet_mapped_model: "gpt-5.3-codex",
|
|
haiku_mapped_model: "gpt-5.4-mini",
|
|
exact_model_mappings: {
|
|
"claude-sonnet-4-5-20250929": "gpt-5.2",
|
|
},
|
|
});
|
|
});
|
|
|
|
it("hydrates form state from api config", () => {
|
|
expect(
|
|
messagesDispatchConfigToFormState({
|
|
opus_mapped_model: "gpt-5.4",
|
|
sonnet_mapped_model: "gpt-5.2",
|
|
haiku_mapped_model: "gpt-5.4-mini",
|
|
exact_model_mappings: {
|
|
"claude-opus-4-6": "gpt-5.4",
|
|
"claude-haiku-4-5-20251001": "gpt-5.4-mini",
|
|
},
|
|
}),
|
|
).toEqual({
|
|
allow_messages_dispatch: false,
|
|
opus_mapped_model: "gpt-5.4",
|
|
sonnet_mapped_model: "gpt-5.2",
|
|
haiku_mapped_model: "gpt-5.4-mini",
|
|
exact_model_mappings: [
|
|
{
|
|
claude_model: "claude-haiku-4-5-20251001",
|
|
target_model: "gpt-5.4-mini",
|
|
},
|
|
{ claude_model: "claude-opus-4-6", target_model: "gpt-5.4" },
|
|
],
|
|
});
|
|
});
|
|
|
|
it("resets mutable form state when platform switches away from openai", () => {
|
|
const state = {
|
|
allow_messages_dispatch: true,
|
|
opus_mapped_model: "gpt-5.2",
|
|
sonnet_mapped_model: "gpt-5.4",
|
|
haiku_mapped_model: "gpt-5.1",
|
|
exact_model_mappings: [
|
|
{ claude_model: "claude-opus-4-6", target_model: "gpt-5.4" },
|
|
],
|
|
};
|
|
|
|
resetMessagesDispatchFormState(state);
|
|
|
|
expect(state).toEqual({
|
|
allow_messages_dispatch: false,
|
|
opus_mapped_model: "gpt-5.4",
|
|
sonnet_mapped_model: "gpt-5.3-codex",
|
|
haiku_mapped_model: "gpt-5.4-mini",
|
|
exact_model_mappings: [],
|
|
});
|
|
});
|
|
});
|