Spracherkennung für: .ts vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
import { beforeEach, describe, expect, it, vi } from "vitest";
const extractImageContentFromSourceMock = vi.fn();
vi.mock("../media/input-files.js", async () => {
const actual =
await vi.importActual<typeof import("../media/input-files.js")>("../media/input-files.js");
return {
...actual,
extractImageContentFromSource: (...args: unknown[]) =>
extractImageContentFromSourceMock(...args),
};
});
import { __testOnlyOpenAiHttp } from "./openai-http.js";
describe("openai image budget accounting", () => {
beforeEach(() => {
vi.clearAllMocks();
});
it("counts normalized base64 image bytes against maxTotalImageBytes", async () => {
extractImageContentFromSourceMock.mockResolvedValueOnce({
type: "image",
data: Buffer.alloc(10, 1).toString("base64"),
mimeType: "image/jpeg",
});
const limits = __testOnlyOpenAiHttp.resolveOpenAiChatCompletionsLimits({
maxTotalImageBytes: 5,
});
await expect(
__testOnlyOpenAiHttp.resolveImagesForRequest(
{
urls: ["data:image/heic;base64,QUJD"],
},
limits,
),
).rejects.toThrow(/Total image payload too large/);
});
it("does not double-count unchanged base64 image payloads", async () => {
extractImageContentFromSourceMock.mockResolvedValueOnce({
type: "image",
data: "QUJDRA==",
mimeType: "image/jpeg",
});
const limits = __testOnlyOpenAiHttp.resolveOpenAiChatCompletionsLimits({
maxTotalImageBytes: 4,
});
await expect(
__testOnlyOpenAiHttp.resolveImagesForRequest(
{
urls: ["data:image/jpeg;base64,QUJDRA=="],
},
limits,
),
).resolves.toEqual([
{
type: "image",
data: "QUJDRA==",
mimeType: "image/jpeg",
},
]);
});
});
¤ Dauer der Verarbeitung: 0.35 Sekunden
(vorverarbeitet am 2026-04-27)
¤
*© Formatika GbR, Deutschland