67 lines
2.0 KiB
TypeScript
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");
|
|
});
|
|
});
|