Files
openclaw-zero-token/media/audio.test.ts
sjhu 571e14a236 feat: upgrade to upstream v2026.3.28
Major upgrade from e26988a38 to upstream v2026.3.28 (f9b107928).
Key changes:
- Upstream src/, ui/, extensions/ (89 bundled extensions)
- Zero-token web providers preserved in src/zero-token/
- AskOnce plugin restored and registered as CLI command
- Added missing packages: @anthropic-ai/vertex-sdk, @modelcontextprotocol/sdk
- Fixed tsconfig rootDir, skipLibCheck for plugin-sdk DTS build
- Added askonce to bundled plugin metadata and package.json exports
- Fixed AskOnce CLI command registration (missing commands metadata)
- Restored AskOnce adapter imports (correct 5-level relative paths)
- Removed stale migration artifacts from root directory
2026-03-30 17:58:12 +08:00

79 lines
2.3 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
isVoiceCompatibleAudio,
TELEGRAM_VOICE_AUDIO_EXTENSIONS,
TELEGRAM_VOICE_MIME_TYPES,
} from "./audio.js";
describe("isVoiceCompatibleAudio", () => {
function expectVoiceCompatibilityCase(
opts: Parameters<typeof isVoiceCompatibleAudio>[0],
expected: boolean,
) {
expect(isVoiceCompatibleAudio(opts)).toBe(expected);
}
function expectVoiceCompatibilityCases(
cases: ReadonlyArray<{
opts: Parameters<typeof isVoiceCompatibleAudio>[0];
expected: boolean;
}>,
) {
cases.forEach(({ opts, expected }) => {
expectVoiceCompatibilityCase(opts, expected);
});
}
it.each([
{
name: "returns true for supported MIME types",
cases: [
...Array.from(TELEGRAM_VOICE_MIME_TYPES, (contentType) => ({
opts: { contentType, fileName: null },
expected: true,
})),
{ opts: { contentType: "audio/ogg; codecs=opus", fileName: null }, expected: true },
{ opts: { contentType: "audio/mp4; codecs=mp4a.40.2", fileName: null }, expected: true },
],
},
{
name: "returns true for supported extensions",
cases: Array.from(TELEGRAM_VOICE_AUDIO_EXTENSIONS, (ext) => ({
opts: { fileName: `voice${ext}` },
expected: true,
})),
},
{
name: "returns false for unsupported MIME types",
cases: [
{ opts: { contentType: "audio/wav", fileName: null }, expected: false },
{ opts: { contentType: "audio/flac", fileName: null }, expected: false },
{ opts: { contentType: "audio/aac", fileName: null }, expected: false },
{ opts: { contentType: "video/mp4", fileName: null }, expected: false },
],
},
{
name: "returns false for unsupported extensions",
cases: [".wav", ".flac", ".webm"].map((ext) => ({
opts: { fileName: `audio${ext}` },
expected: false,
})),
},
{
name: "keeps fallback edge cases explicit",
cases: [
{
opts: {},
expected: false,
},
{
opts: { contentType: "audio/mpeg", fileName: "file.wav" },
expected: true,
},
],
},
])("$name", ({ cases }) => {
expectVoiceCompatibilityCases(cases);
});
});