68 lines
2.1 KiB
TypeScript
68 lines
2.1 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import {
|
|
normalizeMSTeamsConversationId,
|
|
parseMSTeamsActivityTimestamp,
|
|
stripMSTeamsMentionTags,
|
|
wasMSTeamsBotMentioned,
|
|
} from "./inbound.js";
|
|
|
|
describe("msteams inbound", () => {
|
|
describe("stripMSTeamsMentionTags", () => {
|
|
it("removes <at>...</at> tags and trims", () => {
|
|
expect(stripMSTeamsMentionTags("<at>Bot</at> hi")).toBe("hi");
|
|
expect(stripMSTeamsMentionTags("hi <at>Bot</at>")).toBe("hi");
|
|
});
|
|
|
|
it("removes <at ...> tags with attributes", () => {
|
|
expect(stripMSTeamsMentionTags('<at id="1">Bot</at> hi')).toBe("hi");
|
|
expect(stripMSTeamsMentionTags('hi <at itemid="2">Bot</at>')).toBe("hi");
|
|
});
|
|
});
|
|
|
|
describe("normalizeMSTeamsConversationId", () => {
|
|
it("strips the ;messageid suffix", () => {
|
|
expect(normalizeMSTeamsConversationId("19:abc@thread.tacv2;messageid=deadbeef")).toBe(
|
|
"19:abc@thread.tacv2",
|
|
);
|
|
});
|
|
});
|
|
|
|
describe("parseMSTeamsActivityTimestamp", () => {
|
|
it("returns undefined for empty/invalid values", () => {
|
|
expect(parseMSTeamsActivityTimestamp(undefined)).toBeUndefined();
|
|
expect(parseMSTeamsActivityTimestamp("not-a-date")).toBeUndefined();
|
|
});
|
|
|
|
it("parses string timestamps", () => {
|
|
const ts = parseMSTeamsActivityTimestamp("2024-01-01T00:00:00.000Z");
|
|
expect(ts?.toISOString()).toBe("2024-01-01T00:00:00.000Z");
|
|
});
|
|
|
|
it("passes through Date instances", () => {
|
|
const d = new Date("2024-01-01T00:00:00.000Z");
|
|
expect(parseMSTeamsActivityTimestamp(d)).toBe(d);
|
|
});
|
|
});
|
|
|
|
describe("wasMSTeamsBotMentioned", () => {
|
|
it("returns true when a mention entity matches recipient.id", () => {
|
|
expect(
|
|
wasMSTeamsBotMentioned({
|
|
recipient: { id: "bot" },
|
|
entities: [{ type: "mention", mentioned: { id: "bot" } }],
|
|
}),
|
|
).toBe(true);
|
|
});
|
|
|
|
it("returns false when there is no matching mention", () => {
|
|
expect(
|
|
wasMSTeamsBotMentioned({
|
|
recipient: { id: "bot" },
|
|
entities: [{ type: "mention", mentioned: { id: "other" } }],
|
|
}),
|
|
).toBe(false);
|
|
});
|
|
});
|
|
});
|