test: share whatsapp outbound poll fixtures

This commit is contained in:
Peter Steinberger 2026-03-14 01:14:21 +00:00
parent 1ec6b012f8
commit 66de7311c7
3 changed files with 49 additions and 28 deletions

View File

@ -1,5 +1,8 @@
import type { OpenClawConfig } from "openclaw/plugin-sdk/whatsapp";
import { describe, expect, it, vi } from "vitest"; import { describe, expect, it, vi } from "vitest";
import {
createWhatsAppPollFixture,
expectWhatsAppPollSent,
} from "../../../src/test-helpers/whatsapp-outbound.js";
const hoisted = vi.hoisted(() => ({ const hoisted = vi.hoisted(() => ({
sendPollWhatsApp: vi.fn(async () => ({ messageId: "wa-poll-1", toJid: "1555@s.whatsapp.net" })), sendPollWhatsApp: vi.fn(async () => ({ messageId: "wa-poll-1", toJid: "1555@s.whatsapp.net" })),
@ -22,25 +25,16 @@ import { whatsappPlugin } from "./channel.js";
describe("whatsappPlugin outbound sendPoll", () => { describe("whatsappPlugin outbound sendPoll", () => {
it("threads cfg into runtime sendPollWhatsApp call", async () => { it("threads cfg into runtime sendPollWhatsApp call", async () => {
const cfg = { marker: "resolved-cfg" } as OpenClawConfig; const { cfg, poll, to, accountId } = createWhatsAppPollFixture();
const poll = {
question: "Lunch?",
options: ["Pizza", "Sushi"],
maxSelections: 1,
};
const result = await whatsappPlugin.outbound!.sendPoll!({ const result = await whatsappPlugin.outbound!.sendPoll!({
cfg, cfg,
to: "+1555", to,
poll, poll,
accountId: "work", accountId,
}); });
expect(hoisted.sendPollWhatsApp).toHaveBeenCalledWith("+1555", poll, { expectWhatsAppPollSent(hoisted.sendPollWhatsApp, { cfg, poll, to, accountId });
verbose: false,
accountId: "work",
cfg,
});
expect(result).toEqual({ messageId: "wa-poll-1", toJid: "1555@s.whatsapp.net" }); expect(result).toEqual({ messageId: "wa-poll-1", toJid: "1555@s.whatsapp.net" });
}); });
}); });

View File

@ -1,5 +1,8 @@
import { describe, expect, it, vi } from "vitest"; import { describe, expect, it, vi } from "vitest";
import type { OpenClawConfig } from "../../../config/config.js"; import {
createWhatsAppPollFixture,
expectWhatsAppPollSent,
} from "../../../test-helpers/whatsapp-outbound.js";
const hoisted = vi.hoisted(() => ({ const hoisted = vi.hoisted(() => ({
sendPollWhatsApp: vi.fn(async () => ({ messageId: "poll-1", toJid: "1555@s.whatsapp.net" })), sendPollWhatsApp: vi.fn(async () => ({ messageId: "poll-1", toJid: "1555@s.whatsapp.net" })),
@ -17,25 +20,16 @@ import { whatsappOutbound } from "./whatsapp.js";
describe("whatsappOutbound sendPoll", () => { describe("whatsappOutbound sendPoll", () => {
it("threads cfg through poll send options", async () => { it("threads cfg through poll send options", async () => {
const cfg = { marker: "resolved-cfg" } as OpenClawConfig; const { cfg, poll, to, accountId } = createWhatsAppPollFixture();
const poll = {
question: "Lunch?",
options: ["Pizza", "Sushi"],
maxSelections: 1,
};
const result = await whatsappOutbound.sendPoll!({ const result = await whatsappOutbound.sendPoll!({
cfg, cfg,
to: "+1555", to,
poll, poll,
accountId: "work", accountId,
}); });
expect(hoisted.sendPollWhatsApp).toHaveBeenCalledWith("+1555", poll, { expectWhatsAppPollSent(hoisted.sendPollWhatsApp, { cfg, poll, to, accountId });
verbose: false,
accountId: "work",
cfg,
});
expect(result).toEqual({ messageId: "poll-1", toJid: "1555@s.whatsapp.net" }); expect(result).toEqual({ messageId: "poll-1", toJid: "1555@s.whatsapp.net" });
}); });
}); });

View File

@ -0,0 +1,33 @@
import { expect, type MockInstance } from "vitest";
import type { OpenClawConfig } from "../config/config.js";
export function createWhatsAppPollFixture() {
const cfg = { marker: "resolved-cfg" } as OpenClawConfig;
const poll = {
question: "Lunch?",
options: ["Pizza", "Sushi"],
maxSelections: 1,
};
return {
cfg,
poll,
to: "+1555",
accountId: "work",
};
}
export function expectWhatsAppPollSent(
sendPollWhatsApp: MockInstance,
params: {
cfg: OpenClawConfig;
poll: { question: string; options: string[]; maxSelections: number };
to?: string;
accountId?: string;
},
) {
expect(sendPollWhatsApp).toHaveBeenCalledWith(params.to ?? "+1555", params.poll, {
verbose: false,
accountId: params.accountId ?? "work",
cfg: params.cfg,
});
}