57 lines
2.3 KiB
TypeScript
57 lines
2.3 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import type { MsgContext } from "../templating.js";
|
|
import { formatInboundBodyWithSenderMeta } from "./inbound-sender-meta.js";
|
|
|
|
describe("formatInboundBodyWithSenderMeta", () => {
|
|
it("does nothing for direct messages", () => {
|
|
const ctx: MsgContext = { ChatType: "direct", SenderName: "Alice", SenderId: "A1" };
|
|
expect(formatInboundBodyWithSenderMeta({ ctx, body: "[X] hi" })).toBe("[X] hi");
|
|
});
|
|
|
|
it("appends a sender meta line for non-direct messages", () => {
|
|
const ctx: MsgContext = { ChatType: "group", SenderName: "Alice", SenderId: "A1" };
|
|
expect(formatInboundBodyWithSenderMeta({ ctx, body: "[X] hi" })).toBe(
|
|
"[X] hi\n[from: Alice (A1)]",
|
|
);
|
|
});
|
|
|
|
it("prefers SenderE164 in the label when present", () => {
|
|
const ctx: MsgContext = {
|
|
ChatType: "group",
|
|
SenderName: "Bob",
|
|
SenderId: "bob@s.whatsapp.net",
|
|
SenderE164: "+222",
|
|
};
|
|
expect(formatInboundBodyWithSenderMeta({ ctx, body: "[X] hi" })).toBe(
|
|
"[X] hi\n[from: Bob (+222)]",
|
|
);
|
|
});
|
|
|
|
it("appends with a real newline even if the body contains literal \\\\n", () => {
|
|
const ctx: MsgContext = { ChatType: "group", SenderName: "Bob", SenderId: "+222" };
|
|
expect(formatInboundBodyWithSenderMeta({ ctx, body: "[X] one\\n[X] two" })).toBe(
|
|
"[X] one\\n[X] two\n[from: Bob (+222)]",
|
|
);
|
|
});
|
|
|
|
it("does not duplicate a sender meta line when one is already present", () => {
|
|
const ctx: MsgContext = { ChatType: "group", SenderName: "Alice", SenderId: "A1" };
|
|
expect(formatInboundBodyWithSenderMeta({ ctx, body: "[X] hi\n[from: Alice (A1)]" })).toBe(
|
|
"[X] hi\n[from: Alice (A1)]",
|
|
);
|
|
});
|
|
|
|
it("does not append when the body already includes a sender prefix", () => {
|
|
const ctx: MsgContext = { ChatType: "group", SenderName: "Alice", SenderId: "A1" };
|
|
expect(formatInboundBodyWithSenderMeta({ ctx, body: "Alice (A1): hi" })).toBe("Alice (A1): hi");
|
|
});
|
|
|
|
it("does not append when the sender prefix follows an envelope header", () => {
|
|
const ctx: MsgContext = { ChatType: "group", SenderName: "Alice", SenderId: "A1" };
|
|
expect(formatInboundBodyWithSenderMeta({ ctx, body: "[Signal Group] Alice (A1): hi" })).toBe(
|
|
"[Signal Group] Alice (A1): hi",
|
|
);
|
|
});
|
|
});
|