Files
life-echo/app-expo/tests/features/voice/recorder.test.ts

52 lines
1.3 KiB
TypeScript
Raw Normal View History

/* eslint-disable import/first */
import { Platform } from 'react-native';
jest.mock('expo-audio', () => ({
AudioModule: { AudioRecorder: jest.fn() },
AudioQuality: {
HIGH: 'high',
},
IOSOutputFormat: {
MPEG4AAC: 'aac',
},
}));
import {
buildVoiceRecordingOptions,
VOICE_RECORDING_OPTIONS,
} from '@/features/voice/recorder';
describe('buildVoiceRecordingOptions', () => {
test('uses 16 kHz mono m4a recording options for Tencent-compatible speech capture', () => {
const passedOptions = buildVoiceRecordingOptions();
expect(passedOptions).toEqual(
expect.objectContaining({
extension: '.m4a',
sampleRate: 16_000,
numberOfChannels: 1,
bitRate: 32_000,
}),
);
if (Platform.OS === 'ios') {
expect(passedOptions).toEqual(
expect.objectContaining({
outputFormat: VOICE_RECORDING_OPTIONS.ios.outputFormat,
audioQuality: VOICE_RECORDING_OPTIONS.ios.audioQuality,
}),
);
}
if (Platform.OS === 'android') {
expect(passedOptions).toEqual(
expect.objectContaining({
outputFormat: VOICE_RECORDING_OPTIONS.android.outputFormat,
audioEncoder: VOICE_RECORDING_OPTIONS.android.audioEncoder,
}),
);
}
});
});