From bc720dedaf0e3c8809c5f92fa87e2975cca39f46 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 8 May 2026 13:54:10 +0100 Subject: [PATCH] test: clarify boolean membership assertions --- .../discord/src/monitor/model-picker.test.ts | 21 ++++++++++++++++--- .../commands/slash-commands-impl.test.ts | 14 +++++++++++-- src/agents/skills-status.test.ts | 14 +++++++++++-- src/auto-reply/reply/session-delivery.test.ts | 4 ++-- 4 files changed, 44 insertions(+), 9 deletions(-) diff --git a/extensions/discord/src/monitor/model-picker.test.ts b/extensions/discord/src/monitor/model-picker.test.ts index 468ec1c5e1f..9e1fcf5d5c1 100644 --- a/extensions/discord/src/monitor/model-picker.test.ts +++ b/extensions/discord/src/monitor/model-picker.test.ts @@ -495,7 +495,12 @@ describe("Discord model picker rendering", () => { throw new Error("models view did not render a provider select"); } expect(providerSelect.options?.length).toBe(2); - expect(providerSelect.options?.find((option) => option.value === "openai")?.default).toBe(true); + expect(providerSelect.options).toContainEqual( + expect.objectContaining({ + value: "openai", + default: true, + }), + ); const parsedProviderState = parseDiscordModelPickerCustomId(providerSelect.custom_id ?? ""); expect(parsedProviderState?.action).toBe("provider"); @@ -506,7 +511,12 @@ describe("Discord model picker rendering", () => { throw new Error("models view did not render a model select"); } expect(modelSelect.options?.length).toBe(3); - expect(modelSelect.options?.find((option) => option.value === "o3")?.default).toBe(true); + expect(modelSelect.options).toContainEqual( + expect.objectContaining({ + value: "o3", + default: true, + }), + ); const parsedModelSelectState = parseDiscordModelPickerCustomId(modelSelect.custom_id ?? ""); expect(parsedModelSelectState?.action).toBe("model"); @@ -577,7 +587,12 @@ describe("Discord model picker rendering", () => { expect(runtimeSelect.options?.find((option) => option.value === "pi")?.label).toBe( "OpenClaw Pi Default", ); - expect(runtimeSelect.options?.find((option) => option.value === "codex")?.default).toBe(true); + expect(runtimeSelect.options).toContainEqual( + expect.objectContaining({ + value: "codex", + default: true, + }), + ); const submitButton = rows[3]?.components?.at(-1); const submitState = requireValue( diff --git a/extensions/qqbot/src/engine/commands/slash-commands-impl.test.ts b/extensions/qqbot/src/engine/commands/slash-commands-impl.test.ts index 3c5d79b2ad0..45c1ee4e7d7 100644 --- a/extensions/qqbot/src/engine/commands/slash-commands-impl.test.ts +++ b/extensions/qqbot/src/engine/commands/slash-commands-impl.test.ts @@ -37,7 +37,12 @@ describe("QQBot framework slash commands", () => { expect.arrayContaining(["bot-approve", "bot-clear-storage", "bot-logs", "bot-streaming"]), ); for (const commandName of ["bot-approve", "bot-clear-storage", "bot-logs", "bot-streaming"]) { - expect(commands.find((command) => command.name === commandName)?.c2cOnly).toBe(true); + expect(commands).toContainEqual( + expect.objectContaining({ + name: commandName, + c2cOnly: true, + }), + ); } }); @@ -60,7 +65,12 @@ describe("QQBot framework slash commands", () => { const commands = registry.getFrameworkCommands(); expect(commands.map((command) => command.name)).toEqual(["private-admin", "shared-admin"]); - expect(commands.find((command) => command.name === "private-admin")?.c2cOnly).toBe(true); + expect(commands).toContainEqual( + expect.objectContaining({ + name: "private-admin", + c2cOnly: true, + }), + ); expect(commands.find((command) => command.name === "shared-admin")?.c2cOnly).toBeUndefined(); }); diff --git a/src/agents/skills-status.test.ts b/src/agents/skills-status.test.ts index 8ce80855c96..e2db625c472 100644 --- a/src/agents/skills-status.test.ts +++ b/src/agents/skills-status.test.ts @@ -157,8 +157,18 @@ describe("buildWorkspaceSkillStatus", () => { expect(report.agentId).toBe("specialist"); expect(report.agentSkillFilter).toEqual(["alpha"]); expect(report.skills.find((skill) => skill.name === "alpha")?.blockedByAgentFilter).toBe(false); - expect(report.skills.find((skill) => skill.name === "alpha")?.modelVisible).toBe(true); - expect(report.skills.find((skill) => skill.name === "beta")?.blockedByAgentFilter).toBe(true); + expect(report.skills).toContainEqual( + expect.objectContaining({ + name: "alpha", + modelVisible: true, + }), + ); + expect(report.skills).toContainEqual( + expect.objectContaining({ + name: "beta", + blockedByAgentFilter: true, + }), + ); expect(report.skills.find((skill) => skill.name === "beta")?.modelVisible).toBe(false); }); diff --git a/src/auto-reply/reply/session-delivery.test.ts b/src/auto-reply/reply/session-delivery.test.ts index a7ef99166ed..5e66ba85a97 100644 --- a/src/auto-reply/reply/session-delivery.test.ts +++ b/src/auto-reply/reply/session-delivery.test.ts @@ -59,7 +59,7 @@ describe("inter-session lastRoute preservation (fixes #54441)", () => { isInterSession: true, }); // No external route existed — falls through to normal resolution (webchat or undefined). - expect(result === "webchat" || result === undefined).toBe(true); + expect(["webchat", undefined]).toContain(result); }); it("inter-session on session with no persisted lastTo preserves session route", () => { @@ -73,7 +73,7 @@ describe("inter-session lastRoute preservation (fixes #54441)", () => { isInterSession: true, }); // No external route — falls through to normal resolution - expect(result === "session:somekey" || result === undefined).toBe(true); + expect(["session:somekey", undefined]).toContain(result); }); });