import { describe, expect, it } from "vitest"; import { pruneStickerMediaFromContext } from "./bot-message-dispatch.js"; type MediaCtx = { MediaPath?: string; MediaUrl?: string; MediaType?: string; MediaPaths?: string[]; MediaUrls?: string[]; MediaTypes?: string[]; }; function expectSingleImageMedia(ctx: MediaCtx, mediaPath: string) { expect(ctx.MediaPath).toBe(mediaPath); expect(ctx.MediaUrl).toBe(mediaPath); expect(ctx.MediaType).toBe("image/jpeg"); expect(ctx.MediaPaths).toEqual([mediaPath]); expect(ctx.MediaUrls).toEqual([mediaPath]); expect(ctx.MediaTypes).toEqual(["image/jpeg"]); } describe("pruneStickerMediaFromContext", () => { it("preserves appended reply media while removing primary sticker media", () => { const ctx: MediaCtx = { MediaPath: "/tmp/sticker.webp", MediaUrl: "/tmp/sticker.webp", MediaType: "image/webp", MediaPaths: ["/tmp/sticker.webp", "/tmp/replied.jpg"], MediaUrls: ["/tmp/sticker.webp", "/tmp/replied.jpg"], MediaTypes: ["image/webp", "image/jpeg"], }; pruneStickerMediaFromContext(ctx); expectSingleImageMedia(ctx, "/tmp/replied.jpg"); }); it("clears media fields when sticker is the only media", () => { const ctx: MediaCtx = { MediaPath: "/tmp/sticker.webp", MediaUrl: "/tmp/sticker.webp", MediaType: "image/webp", MediaPaths: ["/tmp/sticker.webp"], MediaUrls: ["/tmp/sticker.webp"], MediaTypes: ["image/webp"], }; pruneStickerMediaFromContext(ctx); expect(ctx.MediaPath).toBeUndefined(); expect(ctx.MediaUrl).toBeUndefined(); expect(ctx.MediaType).toBeUndefined(); expect(ctx.MediaPaths).toBeUndefined(); expect(ctx.MediaUrls).toBeUndefined(); expect(ctx.MediaTypes).toBeUndefined(); }); it("does not prune when sticker media is already omitted from context", () => { const ctx: MediaCtx = { MediaPath: "/tmp/replied.jpg", MediaUrl: "/tmp/replied.jpg", MediaType: "image/jpeg", MediaPaths: ["/tmp/replied.jpg"], MediaUrls: ["/tmp/replied.jpg"], MediaTypes: ["image/jpeg"], }; pruneStickerMediaFromContext(ctx, { stickerMediaIncluded: false }); expectSingleImageMedia(ctx, "/tmp/replied.jpg"); }); });