import { beforeEach, describe, expect, it, vi } from "vitest" ;
import { transcribeFirstAudio } from "./audio-preflight.js" ;
const runAudioTranscriptionMock = vi.hoisted(() => vi.fn());
vi.mock("./audio-transcription-runner.js" , () => ({
runAudioTranscription: (...args: unknown[]) => runAudioTranscriptionMock(...args),
}));
describe("transcribeFirstAudio" , () => {
beforeEach(() => {
runAudioTranscriptionMock.mockReset();
});
it("runs audio preflight in auto mode when audio config is absent" , async () => {
runAudioTranscriptionMock.mockResolvedValueOnce({
transcript: "voice note transcript" ,
attachments: [],
});
const transcript = await transcribeFirstAudio({
ctx: {
Body: "<media:audio>" ,
MediaPath: "/tmp/voice.ogg" ,
MediaType: "audio/ogg" ,
},
cfg: {},
});
expect(transcript).toBe("voice note transcript" );
expect(runAudioTranscriptionMock).toHaveBeenCalledTimes(1 );
});
it("skips audio preflight when audio config is explicitly disabled" , async () => {
const transcript = await transcribeFirstAudio({
ctx: {
Body: "<media:audio>" ,
MediaPath: "/tmp/voice.ogg" ,
MediaType: "audio/ogg" ,
},
cfg: {
tools: {
media: {
audio: {
enabled: false ,
},
},
},
},
});
expect(transcript).toBeUndefined();
expect(runAudioTranscriptionMock).not.toHaveBeenCalled();
});
});
Messung V0.5 in Prozent C=100 H=100 G=100
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-08)
¤
*© Formatika GbR, Deutschland