import { describe, expect, it } from "vitest"; import { formatDecisionSummary } from "./runner.entries.js"; import type { MediaUnderstandingDecision } from "./types.js"; describe("media-understanding formatDecisionSummary guards", () => { it("does not throw when decision.attachments is undefined", () => { const run = () => formatDecisionSummary({ capability: "image", outcome: "skipped", attachments: undefined as unknown as MediaUnderstandingDecision["attachments"], }); expect(run).not.toThrow(); expect(run()).toBe("image: skipped"); }); it("does not throw when attachment attempts is malformed", () => { const run = () => formatDecisionSummary({ capability: "video", outcome: "skipped", attachments: [{ attachmentIndex: 0, attempts: { bad: true } }], } as unknown as MediaUnderstandingDecision); expect(run).not.toThrow(); expect(run()).toBe("video: skipped (0/1)"); }); it("ignores non-string provider/model/reason fields", () => { const run = () => formatDecisionSummary({ capability: "audio", outcome: "failed", attachments: [ { attachmentIndex: 0, chosen: { outcome: "failed", provider: { bad: true }, model: 42, }, attempts: [{ reason: { malformed: true } }], }, ], } as unknown as MediaUnderstandingDecision); expect(run).not.toThrow(); expect(run()).toBe("audio: failed (0/1)"); }); });