mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-18 19:04:45 +00:00
test: guard google speech mock calls
This commit is contained in:
@@ -66,6 +66,25 @@ function expectRecordFields(value: unknown, expected: Record<string, unknown>) {
|
||||
return actual;
|
||||
}
|
||||
|
||||
function requireFirstMockArg(mock: ReturnType<typeof vi.fn>, label: string): unknown {
|
||||
const [call] = mock.mock.calls;
|
||||
if (!call) {
|
||||
throw new Error(`Expected ${label}`);
|
||||
}
|
||||
return call[0];
|
||||
}
|
||||
|
||||
function requireFirstRecordArg(
|
||||
mock: ReturnType<typeof vi.fn>,
|
||||
label: string,
|
||||
): Record<string, unknown> {
|
||||
const value = requireFirstMockArg(mock, label);
|
||||
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
||||
throw new Error(`Expected ${label}`);
|
||||
}
|
||||
return value as Record<string, unknown>;
|
||||
}
|
||||
|
||||
describe("Google speech provider", () => {
|
||||
afterEach(() => {
|
||||
vi.unstubAllGlobals();
|
||||
@@ -94,7 +113,7 @@ describe("Google speech provider", () => {
|
||||
timeoutMs: 12_345,
|
||||
});
|
||||
|
||||
const request = expectRecordFields(requestMock.mock.calls[0]?.[0], {
|
||||
const request = expectRecordFields(requireFirstRecordArg(requestMock, "Google TTS request"), {
|
||||
url: "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-flash-tts-preview:generateContent",
|
||||
body: {
|
||||
contents: [
|
||||
@@ -150,11 +169,14 @@ describe("Google speech provider", () => {
|
||||
fileExtension: ".opus",
|
||||
voiceCompatible: true,
|
||||
});
|
||||
const transcodeArg = expectRecordFields(transcodeAudioBufferToOpusMock.mock.calls[0]?.[0], {
|
||||
inputExtension: "wav",
|
||||
tempPrefix: "tts-google-",
|
||||
timeoutMs: 12_000,
|
||||
});
|
||||
const transcodeArg = expectRecordFields(
|
||||
requireFirstRecordArg(transcodeAudioBufferToOpusMock, "Google TTS transcode request"),
|
||||
{
|
||||
inputExtension: "wav",
|
||||
tempPrefix: "tts-google-",
|
||||
timeoutMs: 12_000,
|
||||
},
|
||||
);
|
||||
expect(Buffer.isBuffer(transcodeArg.audioBuffer)).toBe(true);
|
||||
const audioBuffer = transcodeArg.audioBuffer as Buffer;
|
||||
expect(audioBuffer.subarray(0, 4).toString("ascii")).toBe("RIFF");
|
||||
@@ -362,10 +384,9 @@ describe("Google speech provider", () => {
|
||||
timeoutMs: 10_000,
|
||||
});
|
||||
|
||||
expectRecordFields(requestMock.mock.calls[0]?.[0], {
|
||||
const request = expectRecordFields(requireFirstRecordArg(requestMock, "Google TTS request"), {
|
||||
url: "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-flash-tts-preview:generateContent",
|
||||
});
|
||||
const request = requestMock.mock.calls[0]?.[0] as { headers?: HeadersInit };
|
||||
}) as { headers?: HeadersInit };
|
||||
expect(new Headers(request.headers).get("x-goog-api-key")).toBe("env-google-key");
|
||||
});
|
||||
|
||||
@@ -394,7 +415,9 @@ describe("Google speech provider", () => {
|
||||
timeoutMs: 10_000,
|
||||
});
|
||||
|
||||
const request = requestMock.mock.calls[0]?.[0] as { headers?: HeadersInit };
|
||||
const request = requireFirstRecordArg(requestMock, "Google TTS request") as {
|
||||
headers?: HeadersInit;
|
||||
};
|
||||
expect(new Headers(request.headers).get("x-goog-api-key")).toBe("model-provider-google-key");
|
||||
});
|
||||
|
||||
@@ -422,9 +445,12 @@ describe("Google speech provider", () => {
|
||||
timeoutMs: 5_000,
|
||||
});
|
||||
|
||||
const request = expectRecordFields(postJsonRequestMock.mock.calls[0]?.[0], {
|
||||
url: "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-pro-tts:generateContent",
|
||||
});
|
||||
const request = expectRecordFields(
|
||||
requireFirstRecordArg(postJsonRequestMock, "Google telephony TTS request"),
|
||||
{
|
||||
url: "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-pro-tts:generateContent",
|
||||
},
|
||||
);
|
||||
const body = request.body as {
|
||||
contents?: unknown;
|
||||
generationConfig?: { speechConfig?: unknown };
|
||||
@@ -465,7 +491,7 @@ describe("Google speech provider", () => {
|
||||
timeoutMs: 10_000,
|
||||
});
|
||||
|
||||
const request = requestMock.mock.calls[0]?.[0] as {
|
||||
const request = requireFirstRecordArg(requestMock, "Google TTS request") as {
|
||||
body?: { contents?: Array<{ parts?: Array<{ text?: string }> }> };
|
||||
};
|
||||
expect(request.body?.contents?.[0]?.parts?.[0]?.text).toBe(
|
||||
@@ -615,7 +641,7 @@ describe("Google speech provider", () => {
|
||||
});
|
||||
|
||||
const requestConfig = expectRecordFields(
|
||||
resolveProviderHttpRequestConfigMock.mock.calls[0]?.[0],
|
||||
requireFirstRecordArg(resolveProviderHttpRequestConfigMock, "Google TTS HTTP config request"),
|
||||
{
|
||||
allowPrivateNetwork: true,
|
||||
},
|
||||
@@ -645,7 +671,7 @@ describe("Google speech provider", () => {
|
||||
});
|
||||
|
||||
const requestConfig = expectRecordFields(
|
||||
resolveProviderHttpRequestConfigMock.mock.calls[0]?.[0],
|
||||
requireFirstRecordArg(resolveProviderHttpRequestConfigMock, "Google TTS HTTP config request"),
|
||||
{
|
||||
allowPrivateNetwork: true,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user