test: guard ui controller mock calls

This commit is contained in:
Peter Steinberger
2026-05-11 23:30:30 +01:00
parent f7ab8c26b1
commit 1786d60cf8
2 changed files with 34 additions and 7 deletions
+20 -3
View File
@@ -81,6 +81,21 @@ function createSaveState(): {
};
}
function requireRecord(value: unknown): Record<string, unknown> {
if (!value || typeof value !== "object" || Array.isArray(value)) {
throw new Error("Expected a non-array record");
}
return value as Record<string, unknown>;
}
function requireFirstRequestCall(request: ReturnType<typeof vi.fn>): unknown[] {
const [call] = request.mock.calls;
if (!call) {
throw new Error("Expected client request call");
}
return call;
}
describe("loadAgents", () => {
it("preserves selected agent when it still exists in the list", async () => {
const { state, request } = createState();
@@ -371,9 +386,11 @@ describe("saveAgentsConfig", () => {
await saveAgentsConfig(state);
expect(request.mock.calls[0]?.[0]).toBe("config.set");
expect(request.mock.calls[0]?.[1]?.baseHash).toBe("hash-1");
expect(JSON.parse(request.mock.calls[0]?.[1]?.raw as string)).toEqual({
const [method, params] = requireFirstRequestCall(request);
const requestParams = requireRecord(params);
expect(method).toBe("config.set");
expect(requestParams.baseHash).toBe("hash-1");
expect(JSON.parse(String(requestParams.raw))).toEqual({
agents: { list: [{ id: "main" }] },
});
expect(request).toHaveBeenNthCalledWith(2, "config.get", {});
+14 -4
View File
@@ -58,6 +58,14 @@ function requireRecord(value: unknown): Record<string, unknown> {
return value as Record<string, unknown>;
}
function requireFirstRequestCall(request: ReturnType<typeof vi.fn>): unknown[] {
const [call] = request.mock.calls;
if (!call) {
throw new Error("Expected client request call");
}
return call;
}
function expectTextChatMessage(message: unknown, role: string, text: string): void {
const record = requireRecord(message);
expect(record.role).toBe(role);
@@ -901,8 +909,9 @@ describe("sendChatMessage", () => {
expect(result).toMatch(UUID_V4_RE);
expect(request).toHaveBeenCalledTimes(1);
expect(request.mock.calls[0]?.[0]).toBe("chat.send");
const sendParams = requireRecord(request.mock.calls[0]?.[1]);
const [requestMethod, requestParams] = requireFirstRequestCall(request);
expect(requestMethod).toBe("chat.send");
const sendParams = requireRecord(requestParams);
expect(sendParams.message).toBe("summarize");
expect(sendParams.attachments).toEqual([
{
@@ -950,8 +959,9 @@ describe("sendChatMessage", () => {
expect(result).toMatch(UUID_V4_RE);
expect(request).toHaveBeenCalledTimes(1);
expect(request.mock.calls[0]?.[0]).toBe("chat.send");
const sendParams = requireRecord(request.mock.calls[0]?.[1]);
const [requestMethod, requestParams] = requireFirstRequestCall(request);
expect(requestMethod).toBe("chat.send");
const sendParams = requireRecord(requestParams);
const attachments = sendParams.attachments;
expect(Array.isArray(attachments)).toBe(true);
const [attachmentParam] = attachments as unknown[];