Spaces:
Running
Running
| import { describe, expect, it } from "vitest"; | |
| import { | |
| formatOutboundPayloadLog, | |
| normalizeOutboundPayloads, | |
| normalizeOutboundPayloadsForJson, | |
| } from "./payloads.js"; | |
| describe("normalizeOutboundPayloadsForJson", () => { | |
| it("normalizes payloads with mediaUrl and mediaUrls", () => { | |
| expect( | |
| normalizeOutboundPayloadsForJson([ | |
| { text: "hi" }, | |
| { text: "photo", mediaUrl: "https://x.test/a.jpg" }, | |
| { text: "multi", mediaUrls: ["https://x.test/1.png"] }, | |
| ]), | |
| ).toEqual([ | |
| { text: "hi", mediaUrl: null, mediaUrls: undefined, channelData: undefined }, | |
| { | |
| text: "photo", | |
| mediaUrl: "https://x.test/a.jpg", | |
| mediaUrls: ["https://x.test/a.jpg"], | |
| channelData: undefined, | |
| }, | |
| { | |
| text: "multi", | |
| mediaUrl: null, | |
| mediaUrls: ["https://x.test/1.png"], | |
| channelData: undefined, | |
| }, | |
| ]); | |
| }); | |
| it("keeps mediaUrl null for multi MEDIA tags", () => { | |
| expect( | |
| normalizeOutboundPayloadsForJson([ | |
| { | |
| text: "MEDIA:https://x.test/a.png\nMEDIA:https://x.test/b.png", | |
| }, | |
| ]), | |
| ).toEqual([ | |
| { | |
| text: "", | |
| mediaUrl: null, | |
| mediaUrls: ["https://x.test/a.png", "https://x.test/b.png"], | |
| channelData: undefined, | |
| }, | |
| ]); | |
| }); | |
| }); | |
| describe("normalizeOutboundPayloads", () => { | |
| it("keeps channelData-only payloads", () => { | |
| const channelData = { line: { flexMessage: { altText: "Card", contents: {} } } }; | |
| const normalized = normalizeOutboundPayloads([{ channelData }]); | |
| expect(normalized).toEqual([{ text: "", mediaUrls: [], channelData }]); | |
| }); | |
| }); | |
| describe("formatOutboundPayloadLog", () => { | |
| it("trims trailing text and appends media lines", () => { | |
| expect( | |
| formatOutboundPayloadLog({ | |
| text: "hello ", | |
| mediaUrls: ["https://x.test/a.png", "https://x.test/b.png"], | |
| }), | |
| ).toBe("hello\nMEDIA:https://x.test/a.png\nMEDIA:https://x.test/b.png"); | |
| }); | |
| it("logs media-only payloads", () => { | |
| expect( | |
| formatOutboundPayloadLog({ | |
| text: "", | |
| mediaUrls: ["https://x.test/a.png"], | |
| }), | |
| ).toBe("MEDIA:https://x.test/a.png"); | |
| }); | |
| }); | |