@100mslive/hms-video-store
Version:
@100mslive Core SDK which abstracts the complexities of webRTC while providing a reactive store for data management with a unidirectional data flow
43 lines (37 loc) • 1.97 kB
text/typescript
import { DeviceManager } from './DeviceManager';
import {
DevicesWiredHeadphonesWithMic,
DevicesWiredHeadphonesWithoutMic,
DevicesWithStereoHeadphones,
} from './DeviceTestData';
import { EventBus } from '../events/EventBus';
import { Store } from '../sdk/store';
describe('DeviceManager', () => {
const store = new Store();
const eventBus = new EventBus();
const deviceManager = new DeviceManager(store, eventBus);
deviceManager.audioInput = DevicesWiredHeadphonesWithoutMic.audioInput;
deviceManager.audioOutput = DevicesWiredHeadphonesWithoutMic.audioOutput;
deviceManager.videoInput = DevicesWiredHeadphonesWithoutMic.videoInput;
it('should select non default input on device change', () => {
const selectedAudioInput = deviceManager.getNewAudioInputDevice();
expect(selectedAudioInput?.deviceId).toBe(deviceManager.audioInput[1].deviceId);
});
it('should select default output device when headphones with no mic connected', () => {
deviceManager.setOutputDevice();
expect(deviceManager.outputDevice?.deviceId).toBe(deviceManager.audioOutput[0].deviceId);
});
it('should select default output when headphones with mic is connected', () => {
deviceManager.audioInput = DevicesWiredHeadphonesWithMic.audioInput;
deviceManager.audioOutput = DevicesWiredHeadphonesWithMic.audioOutput;
expect(deviceManager.getNewAudioInputDevice()?.deviceId).toBe(deviceManager.audioInput[1].deviceId);
deviceManager.setOutputDevice();
expect(deviceManager.outputDevice?.deviceId).toBe(deviceManager.audioOutput[0].deviceId);
});
it('should select no default output device when headphones with stereo is connected', () => {
deviceManager.audioInput = DevicesWithStereoHeadphones.audioInput;
deviceManager.audioOutput = DevicesWithStereoHeadphones.audioOutput;
deviceManager.setOutputDevice();
expect(deviceManager.outputDevice?.deviceId).toBe(deviceManager.audioOutput[3].deviceId);
});
});