97 lines
3.1 KiB
TypeScript
97 lines
3.1 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
buildTelegramThreadParams,
|
|
buildTypingThreadParams,
|
|
normalizeForwardedContext,
|
|
} from "./helpers.js";
|
|
|
|
describe("buildTelegramThreadParams", () => {
|
|
it("omits General topic thread id for message sends", () => {
|
|
expect(buildTelegramThreadParams(1)).toBeUndefined();
|
|
});
|
|
|
|
it("includes non-General topic thread ids", () => {
|
|
expect(buildTelegramThreadParams(99)).toEqual({ message_thread_id: 99 });
|
|
});
|
|
|
|
it("normalizes thread ids to integers", () => {
|
|
expect(buildTelegramThreadParams(42.9)).toEqual({ message_thread_id: 42 });
|
|
});
|
|
});
|
|
|
|
describe("buildTypingThreadParams", () => {
|
|
it("returns undefined when no thread id is provided", () => {
|
|
expect(buildTypingThreadParams(undefined)).toBeUndefined();
|
|
});
|
|
|
|
it("includes General topic thread id for typing indicators", () => {
|
|
expect(buildTypingThreadParams(1)).toEqual({ message_thread_id: 1 });
|
|
});
|
|
|
|
it("normalizes thread ids to integers", () => {
|
|
expect(buildTypingThreadParams(42.9)).toEqual({ message_thread_id: 42 });
|
|
});
|
|
});
|
|
|
|
describe("normalizeForwardedContext", () => {
|
|
it("handles forward_origin users", () => {
|
|
const ctx = normalizeForwardedContext({
|
|
forward_origin: {
|
|
type: "user",
|
|
sender_user: { first_name: "Ada", last_name: "Lovelace", username: "ada", id: 42 },
|
|
date: 123,
|
|
},
|
|
} as any);
|
|
expect(ctx).not.toBeNull();
|
|
expect(ctx?.from).toBe("Ada Lovelace (@ada)");
|
|
expect(ctx?.fromType).toBe("user");
|
|
expect(ctx?.fromId).toBe("42");
|
|
expect(ctx?.fromUsername).toBe("ada");
|
|
expect(ctx?.fromTitle).toBe("Ada Lovelace");
|
|
expect(ctx?.date).toBe(123);
|
|
});
|
|
|
|
it("handles hidden forward_origin names", () => {
|
|
const ctx = normalizeForwardedContext({
|
|
forward_origin: { type: "hidden_user", sender_user_name: "Hidden Name", date: 456 },
|
|
} as any);
|
|
expect(ctx).not.toBeNull();
|
|
expect(ctx?.from).toBe("Hidden Name");
|
|
expect(ctx?.fromType).toBe("hidden_user");
|
|
expect(ctx?.fromTitle).toBe("Hidden Name");
|
|
expect(ctx?.date).toBe(456);
|
|
});
|
|
|
|
it("handles legacy forwards with signatures", () => {
|
|
const ctx = normalizeForwardedContext({
|
|
forward_from_chat: {
|
|
title: "Clawdbot Updates",
|
|
username: "clawdbot",
|
|
id: 99,
|
|
type: "channel",
|
|
},
|
|
forward_signature: "Stan",
|
|
forward_date: 789,
|
|
} as any);
|
|
expect(ctx).not.toBeNull();
|
|
expect(ctx?.from).toBe("Clawdbot Updates (Stan)");
|
|
expect(ctx?.fromType).toBe("legacy_channel");
|
|
expect(ctx?.fromId).toBe("99");
|
|
expect(ctx?.fromUsername).toBe("clawdbot");
|
|
expect(ctx?.fromTitle).toBe("Clawdbot Updates");
|
|
expect(ctx?.fromSignature).toBe("Stan");
|
|
expect(ctx?.date).toBe(789);
|
|
});
|
|
|
|
it("handles legacy hidden sender names", () => {
|
|
const ctx = normalizeForwardedContext({
|
|
forward_sender_name: "Legacy Hidden",
|
|
forward_date: 111,
|
|
} as any);
|
|
expect(ctx).not.toBeNull();
|
|
expect(ctx?.from).toBe("Legacy Hidden");
|
|
expect(ctx?.fromType).toBe("legacy_hidden_user");
|
|
expect(ctx?.date).toBe(111);
|
|
});
|
|
});
|