mirror of
https://github.com/moltbot/moltbot.git
synced 2026-05-13 15:47:28 +00:00
45 lines
1.6 KiB
TypeScript
45 lines
1.6 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
import {
|
|
elevenLabsMediaUnderstandingProvider,
|
|
transcribeElevenLabsAudio,
|
|
} from "./media-understanding-provider.js";
|
|
|
|
describe("elevenLabsMediaUnderstandingProvider", () => {
|
|
it("has expected provider metadata", () => {
|
|
expect(elevenLabsMediaUnderstandingProvider.id).toBe("elevenlabs");
|
|
expect(elevenLabsMediaUnderstandingProvider.capabilities).toEqual(["audio"]);
|
|
expect(elevenLabsMediaUnderstandingProvider.defaultModels?.audio).toBe("scribe_v2");
|
|
expect(elevenLabsMediaUnderstandingProvider.transcribeAudio).toBeDefined();
|
|
});
|
|
|
|
it("posts multipart audio to ElevenLabs speech-to-text", async () => {
|
|
const fetchMock = vi
|
|
.fn<typeof fetch>()
|
|
.mockResolvedValue(new Response(JSON.stringify({ text: "hello" })));
|
|
|
|
const result = await transcribeElevenLabsAudio({
|
|
buffer: Buffer.from("audio"),
|
|
fileName: "voice.mp3",
|
|
mime: "audio/mpeg",
|
|
apiKey: "eleven-key",
|
|
model: "scribe_v2",
|
|
language: "en",
|
|
timeoutMs: 1000,
|
|
fetchFn: fetchMock,
|
|
});
|
|
|
|
expect(result).toEqual({ text: "hello", model: "scribe_v2" });
|
|
expect(fetchMock).toHaveBeenCalledWith(
|
|
"https://api.elevenlabs.io/v1/speech-to-text",
|
|
expect.objectContaining({ method: "POST" }),
|
|
);
|
|
const init = fetchMock.mock.calls[0]?.[1] as RequestInit;
|
|
const headers = new Headers(init.headers);
|
|
expect(headers.get("xi-api-key")).toBe("eleven-key");
|
|
const form = init.body as FormData;
|
|
expect(form.get("model_id")).toBe("scribe_v2");
|
|
expect(form.get("language_code")).toBe("en");
|
|
expect(form.get("file")).toBeInstanceOf(Blob);
|
|
});
|
|
});
|