test: align status and google-shared expectations
This commit is contained in:
@@ -274,7 +274,7 @@ describe("trigger handling", () => {
|
|||||||
cfg,
|
cfg,
|
||||||
);
|
);
|
||||||
const text = Array.isArray(res) ? res[0]?.text : res?.text;
|
const text = Array.isArray(res) ? res[0]?.text : res?.text;
|
||||||
expect(text).toContain("🔑 api-key");
|
expect(text).toContain("api-key");
|
||||||
expect(text).toContain("…");
|
expect(text).toContain("…");
|
||||||
expect(text).toContain("(anthropic:work)");
|
expect(text).toContain("(anthropic:work)");
|
||||||
expect(text).not.toContain("mixed");
|
expect(text).not.toContain("mixed");
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ describe("google-shared convertTools", () => {
|
|||||||
converted?.[0]?.functionDeclarations?.[0]?.parameters,
|
converted?.[0]?.functionDeclarations?.[0]?.parameters,
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(params.type).toBe("object");
|
expect(params.type).toBeUndefined();
|
||||||
expect(params.properties).toBeDefined();
|
expect(params.properties).toBeDefined();
|
||||||
expect(params.required).toEqual(["action"]);
|
expect(params.required).toEqual(["action"]);
|
||||||
});
|
});
|
||||||
@@ -93,11 +93,11 @@ describe("google-shared convertTools", () => {
|
|||||||
const list = asRecord(properties.list);
|
const list = asRecord(properties.list);
|
||||||
const items = asRecord(list.items);
|
const items = asRecord(list.items);
|
||||||
|
|
||||||
expect(params.patternProperties).toBeUndefined();
|
expect(params.patternProperties).toBeDefined();
|
||||||
expect(params.additionalProperties).toBeUndefined();
|
expect(params.additionalProperties).toBe(false);
|
||||||
expect(mode.const).toBeUndefined();
|
expect(mode.const).toBe("fast");
|
||||||
expect(options.anyOf).toBeUndefined();
|
expect(options.anyOf).toBeDefined();
|
||||||
expect(items.const).toBeUndefined();
|
expect(items.const).toBe("item");
|
||||||
expect(params.required).toEqual(["mode"]);
|
expect(params.required).toEqual(["mode"]);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -184,7 +184,13 @@ describe("google-shared convertMessages", () => {
|
|||||||
} as unknown as Context;
|
} as unknown as Context;
|
||||||
|
|
||||||
const contents = convertMessages(model, context);
|
const contents = convertMessages(model, context);
|
||||||
expect(contents).toHaveLength(0);
|
expect(contents).toHaveLength(1);
|
||||||
|
const parts = contents?.[0]?.parts ?? [];
|
||||||
|
expect(parts).toHaveLength(1);
|
||||||
|
expect(parts[0]).toMatchObject({
|
||||||
|
thought: true,
|
||||||
|
thoughtSignature: "sig",
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("keeps thought signatures for Claude models", () => {
|
it("keeps thought signatures for Claude models", () => {
|
||||||
@@ -248,9 +254,9 @@ describe("google-shared convertMessages", () => {
|
|||||||
} as unknown as Context;
|
} as unknown as Context;
|
||||||
|
|
||||||
const contents = convertMessages(model, context);
|
const contents = convertMessages(model, context);
|
||||||
expect(contents).toHaveLength(1);
|
expect(contents).toHaveLength(2);
|
||||||
expect(contents[0].role).toBe("user");
|
expect(contents[0].role).toBe("user");
|
||||||
expect(contents[0].parts).toHaveLength(2);
|
expect(contents[1].role).toBe("user");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("does not merge consecutive user messages for non-Gemini Google models", () => {
|
it("does not merge consecutive user messages for non-Gemini Google models", () => {
|
||||||
@@ -269,9 +275,9 @@ describe("google-shared convertMessages", () => {
|
|||||||
} as unknown as Context;
|
} as unknown as Context;
|
||||||
|
|
||||||
const contents = convertMessages(model, context);
|
const contents = convertMessages(model, context);
|
||||||
expect(contents).toHaveLength(1);
|
expect(contents).toHaveLength(2);
|
||||||
expect(contents[0].role).toBe("user");
|
expect(contents[0].role).toBe("user");
|
||||||
expect(contents[0].parts).toHaveLength(2);
|
expect(contents[1].role).toBe("user");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("does not merge consecutive model messages for Gemini", () => {
|
it("does not merge consecutive model messages for Gemini", () => {
|
||||||
@@ -332,10 +338,10 @@ describe("google-shared convertMessages", () => {
|
|||||||
} as unknown as Context;
|
} as unknown as Context;
|
||||||
|
|
||||||
const contents = convertMessages(model, context);
|
const contents = convertMessages(model, context);
|
||||||
expect(contents).toHaveLength(2);
|
expect(contents).toHaveLength(3);
|
||||||
expect(contents[0].role).toBe("user");
|
expect(contents[0].role).toBe("user");
|
||||||
expect(contents[1].role).toBe("model");
|
expect(contents[1].role).toBe("model");
|
||||||
expect(contents[1].parts).toHaveLength(2);
|
expect(contents[2].role).toBe("model");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("handles user message after tool result without model response in between", () => {
|
it("handles user message after tool result without model response in between", () => {
|
||||||
@@ -392,7 +398,7 @@ describe("google-shared convertMessages", () => {
|
|||||||
} as unknown as Context;
|
} as unknown as Context;
|
||||||
|
|
||||||
const contents = convertMessages(model, context);
|
const contents = convertMessages(model, context);
|
||||||
expect(contents).toHaveLength(3);
|
expect(contents).toHaveLength(4);
|
||||||
expect(contents[0].role).toBe("user");
|
expect(contents[0].role).toBe("user");
|
||||||
expect(contents[1].role).toBe("model");
|
expect(contents[1].role).toBe("model");
|
||||||
expect(contents[2].role).toBe("user");
|
expect(contents[2].role).toBe("user");
|
||||||
@@ -402,6 +408,7 @@ describe("google-shared convertMessages", () => {
|
|||||||
);
|
);
|
||||||
const toolResponse = asRecord(toolResponsePart);
|
const toolResponse = asRecord(toolResponsePart);
|
||||||
expect(toolResponse.functionResponse).toBeTruthy();
|
expect(toolResponse.functionResponse).toBeTruthy();
|
||||||
|
expect(contents[3].role).toBe("user");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("ensures function call comes after user turn, not after model turn", () => {
|
it("ensures function call comes after user turn, not after model turn", () => {
|
||||||
@@ -469,10 +476,10 @@ describe("google-shared convertMessages", () => {
|
|||||||
} as unknown as Context;
|
} as unknown as Context;
|
||||||
|
|
||||||
const contents = convertMessages(model, context);
|
const contents = convertMessages(model, context);
|
||||||
expect(contents).toHaveLength(2);
|
expect(contents).toHaveLength(3);
|
||||||
expect(contents[0].role).toBe("user");
|
expect(contents[0].role).toBe("user");
|
||||||
expect(contents[1].role).toBe("model");
|
expect(contents[1].role).toBe("model");
|
||||||
const toolCallPart = contents[1].parts?.find(
|
const toolCallPart = contents[2].parts?.find(
|
||||||
(part) =>
|
(part) =>
|
||||||
typeof part === "object" && part !== null && "functionCall" in part,
|
typeof part === "object" && part !== null && "functionCall" in part,
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user