feat!: move msteams to plugin
This commit is contained in:
67
extensions/msteams/src/inbound.test.ts
Normal file
67
extensions/msteams/src/inbound.test.ts
Normal file
@@ -0,0 +1,67 @@
|
||||
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);
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user