Files
openclaw/extensions/zalouser/src/message-sid.test.ts
2026-03-02 22:16:47 +00:00

67 lines
2.0 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
formatZalouserMessageSidFull,
parseZalouserMessageSidFull,
resolveZalouserMessageSid,
resolveZalouserReactionMessageIds,
} from "./message-sid.js";
describe("zalouser message sid helpers", () => {
it("parses MessageSidFull pairs", () => {
expect(parseZalouserMessageSidFull("111:222")).toEqual({
msgId: "111",
cliMsgId: "222",
});
expect(parseZalouserMessageSidFull("111")).toBeNull();
expect(parseZalouserMessageSidFull(undefined)).toBeNull();
});
it("resolves reaction ids from explicit params first", () => {
expect(
resolveZalouserReactionMessageIds({
messageId: "m-1",
cliMsgId: "c-1",
currentMessageId: "x:y",
}),
).toEqual({
msgId: "m-1",
cliMsgId: "c-1",
});
});
it("resolves reaction ids from current message sid full", () => {
expect(
resolveZalouserReactionMessageIds({
currentMessageId: "m-2:c-2",
}),
).toEqual({
msgId: "m-2",
cliMsgId: "c-2",
});
});
it("falls back to duplicated current id when no pair is available", () => {
expect(
resolveZalouserReactionMessageIds({
currentMessageId: "solo",
}),
).toEqual({
msgId: "solo",
cliMsgId: "solo",
});
});
it("formats message sid fields for context payload", () => {
expect(formatZalouserMessageSidFull({ msgId: "1", cliMsgId: "2" })).toBe("1:2");
expect(formatZalouserMessageSidFull({ msgId: "1" })).toBe("1");
expect(formatZalouserMessageSidFull({ cliMsgId: "2" })).toBe("2");
expect(formatZalouserMessageSidFull({})).toBeUndefined();
});
it("resolves primary message sid with fallback timestamp", () => {
expect(resolveZalouserMessageSid({ msgId: "1", cliMsgId: "2", fallback: "t" })).toBe("1");
expect(resolveZalouserMessageSid({ cliMsgId: "2", fallback: "t" })).toBe("2");
expect(resolveZalouserMessageSid({ fallback: "t" })).toBe("t");
});
});