mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 17:44:33 +00:00
feat(zalouser): add reactions, group context, and receipt acks
This commit is contained in:
@@ -1,27 +1,46 @@
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import {
|
||||
sendDeliveredZalouser,
|
||||
sendImageZalouser,
|
||||
sendLinkZalouser,
|
||||
sendMessageZalouser,
|
||||
sendReactionZalouser,
|
||||
sendSeenZalouser,
|
||||
sendTypingZalouser,
|
||||
} from "./send.js";
|
||||
import { sendZaloLink, sendZaloTextMessage, sendZaloTypingEvent } from "./zalo-js.js";
|
||||
import {
|
||||
sendZaloDeliveredEvent,
|
||||
sendZaloLink,
|
||||
sendZaloReaction,
|
||||
sendZaloSeenEvent,
|
||||
sendZaloTextMessage,
|
||||
sendZaloTypingEvent,
|
||||
} from "./zalo-js.js";
|
||||
|
||||
vi.mock("./zalo-js.js", () => ({
|
||||
sendZaloTextMessage: vi.fn(),
|
||||
sendZaloLink: vi.fn(),
|
||||
sendZaloTypingEvent: vi.fn(),
|
||||
sendZaloReaction: vi.fn(),
|
||||
sendZaloDeliveredEvent: vi.fn(),
|
||||
sendZaloSeenEvent: vi.fn(),
|
||||
}));
|
||||
|
||||
const mockSendText = vi.mocked(sendZaloTextMessage);
|
||||
const mockSendLink = vi.mocked(sendZaloLink);
|
||||
const mockSendTyping = vi.mocked(sendZaloTypingEvent);
|
||||
const mockSendReaction = vi.mocked(sendZaloReaction);
|
||||
const mockSendDelivered = vi.mocked(sendZaloDeliveredEvent);
|
||||
const mockSendSeen = vi.mocked(sendZaloSeenEvent);
|
||||
|
||||
describe("zalouser send helpers", () => {
|
||||
beforeEach(() => {
|
||||
mockSendText.mockReset();
|
||||
mockSendLink.mockReset();
|
||||
mockSendTyping.mockReset();
|
||||
mockSendReaction.mockReset();
|
||||
mockSendDelivered.mockReset();
|
||||
mockSendSeen.mockReset();
|
||||
});
|
||||
|
||||
it("delegates text send to JS transport", async () => {
|
||||
@@ -79,4 +98,60 @@ describe("zalouser send helpers", () => {
|
||||
isGroup: true,
|
||||
});
|
||||
});
|
||||
|
||||
it("delegates reaction helper to JS transport", async () => {
|
||||
mockSendReaction.mockResolvedValueOnce({ ok: true });
|
||||
|
||||
const result = await sendReactionZalouser({
|
||||
threadId: "thread-5",
|
||||
profile: "p5",
|
||||
isGroup: true,
|
||||
msgId: "100",
|
||||
cliMsgId: "200",
|
||||
emoji: "👍",
|
||||
});
|
||||
|
||||
expect(mockSendReaction).toHaveBeenCalledWith({
|
||||
profile: "p5",
|
||||
threadId: "thread-5",
|
||||
isGroup: true,
|
||||
msgId: "100",
|
||||
cliMsgId: "200",
|
||||
emoji: "👍",
|
||||
remove: undefined,
|
||||
});
|
||||
expect(result).toEqual({ ok: true, error: undefined });
|
||||
});
|
||||
|
||||
it("delegates delivered+seen helpers to JS transport", async () => {
|
||||
mockSendDelivered.mockResolvedValueOnce();
|
||||
mockSendSeen.mockResolvedValueOnce();
|
||||
|
||||
const message = {
|
||||
msgId: "100",
|
||||
cliMsgId: "200",
|
||||
uidFrom: "1",
|
||||
idTo: "2",
|
||||
msgType: "webchat",
|
||||
st: 1,
|
||||
at: 0,
|
||||
cmd: 0,
|
||||
ts: "123",
|
||||
};
|
||||
|
||||
await sendDeliveredZalouser({ profile: "p6", isGroup: true, message, isSeen: false });
|
||||
await sendSeenZalouser({ profile: "p6", isGroup: true, message });
|
||||
|
||||
expect(mockSendDelivered).toHaveBeenCalledWith({
|
||||
profile: "p6",
|
||||
isGroup: true,
|
||||
message,
|
||||
isSeen: false,
|
||||
});
|
||||
expect(mockSendSeen).toHaveBeenCalledWith({
|
||||
profile: "p6",
|
||||
isGroup: true,
|
||||
message,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user