openclaw/extensions/feishu/src/send.test.ts

72 lines
1.7 KiB
TypeScript
Raw Normal View History

import type { ClawdbotConfig } from "openclaw/plugin-sdk";
import { beforeEach, describe, expect, it, vi } from "vitest";
import { getMessageFeishu } from "./send.js";
const { mockClientGet, mockCreateFeishuClient, mockResolveFeishuAccount } = vi.hoisted(() => ({
mockClientGet: vi.fn(),
mockCreateFeishuClient: vi.fn(),
mockResolveFeishuAccount: vi.fn(),
}));
vi.mock("./client.js", () => ({
createFeishuClient: mockCreateFeishuClient,
}));
vi.mock("./accounts.js", () => ({
resolveFeishuAccount: mockResolveFeishuAccount,
}));
describe("getMessageFeishu", () => {
beforeEach(() => {
vi.clearAllMocks();
mockResolveFeishuAccount.mockReturnValue({
accountId: "default",
configured: true,
});
mockCreateFeishuClient.mockReturnValue({
im: {
message: {
get: mockClientGet,
},
},
});
});
it("extracts text content from interactive card elements", async () => {
mockClientGet.mockResolvedValueOnce({
code: 0,
data: {
items: [
{
message_id: "om_1",
chat_id: "oc_1",
msg_type: "interactive",
body: {
content: JSON.stringify({
elements: [
{ tag: "markdown", content: "hello markdown" },
{ tag: "div", text: { content: "hello div" } },
],
}),
},
},
],
},
});
const result = await getMessageFeishu({
cfg: {} as ClawdbotConfig,
messageId: "om_1",
});
expect(result).toEqual(
expect.objectContaining({
messageId: "om_1",
chatId: "oc_1",
contentType: "interactive",
content: "hello markdown\nhello div",
}),
);
});
});