Skip to content

Commit

Permalink
test: add test for local audio and video track
Browse files Browse the repository at this point in the history
  • Loading branch information
arun3528 committed Feb 22, 2023
1 parent f7ba13c commit 95547e1
Show file tree
Hide file tree
Showing 7 changed files with 69 additions and 29 deletions.
11 changes: 11 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,17 @@ module.exports = {
'react/react-in-jsx-scope': 0,
},
},
{
files: ['**/*.spec.ts'],
rules: {
'jsdoc/require-description': 0,
'@typescript-eslint/no-shadow': 0,
'jsdoc/require-jsdoc': 0,
'react/display-name': 0,
'react/prop-types': 0,
'react/react-in-jsx-scope': 0,
},
},
],
settings: {
'import/parsers': {
Expand Down
3 changes: 0 additions & 3 deletions packages/webrtc-core/src/device/device-management.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,6 @@ describe('Device Management', () => {
const videoTrack = new MediaStreamTrack();
mockStream.getAudioTracks.mockReturnValue([audioTrack]);
mockStream.getVideoTracks.mockReturnValue([videoTrack]);

it('should call getDisplayMedia', async () => {
expect.assertions(1);

Expand All @@ -242,7 +241,6 @@ describe('Device Management', () => {
width: 1920,
height: 1080,
frameRate: 30,
suppressLocalAudioPlayback: true,
},
withAudio: false,
});
Expand All @@ -253,7 +251,6 @@ describe('Device Management', () => {
width: 1920,
height: 1080,
frameRate: 30,
suppressLocalAudioPlayback: true,
},
audio: false,
});
Expand Down
27 changes: 27 additions & 0 deletions packages/webrtc-core/src/media/local-audio-track.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { createMockedStream } from '../util/test-utils';
import { LocalAudioTrack } from './local-audio-track';
import MediaStreamStub from '../mocks/media-stream-stub';
import { createBrowserMock } from '../mocks/create-browser-mock';
/**
* A dummy LocalAudioTrack implementation so we can instantiate it for testing.
*/
class TestLocalAudioTrack extends LocalAudioTrack {}

describe('LocalAudioTrack', () => {
createBrowserMock(MediaStreamStub, 'MediaStream');
const mockStream = createMockedStream();
let localAudioTrack: TestLocalAudioTrack;
beforeEach(() => {
localAudioTrack = new TestLocalAudioTrack(mockStream.getTracks()[0]);
});

it('Should call applyConstraints on track when setEncoderConstaints is called', () => {
expect.assertions(2);
const encoderConstraints = { echoCancellation: true, channelCount: 1, sampleSize: 16 };

jest.spyOn(localAudioTrack, 'getMediaStreamTrack');
localAudioTrack.setEncoderConstraints(encoderConstraints);
expect(localAudioTrack.getMediaStreamTrack).toHaveBeenCalledTimes(1);
expect(mockStream.getTracks()[0].applyConstraints).toHaveBeenCalledWith(encoderConstraints);
});
});
20 changes: 1 addition & 19 deletions packages/webrtc-core/src/media/local-track.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import { createMockedStream } from '../util/test-utils';
import { LocalTrack } from './local-track';
import MediaStreamStub from '../mocks/media-stream-stub';
import { createBrowserMock } from '../mocks/create-browser-mock';

/**
* A dummy LocalTrack implementation so we can instantiate it for testing.
*/
Expand Down Expand Up @@ -61,20 +60,12 @@ describe('LocalTrack', () => {
const effect = {
load: jest.fn(),

/**
*
*/
getUnderlyingStream: () => {
return {
/**
*
*/
getAudioTracks: () => {
return [];
},
/**
*
*/

getVideoTracks: () => {
return [videotrack];
},
Expand All @@ -99,20 +90,11 @@ describe('LocalTrack', () => {
const effect = {
load: jest.fn(),
dispose: jest.fn(),
/**
*
*/
getUnderlyingStream: () => {
return {
/**
*
*/
getAudioTracks: () => {
return [audioTrack];
},
/**
*
*/
getVideoTracks: () => {
return [];
},
Expand Down
27 changes: 27 additions & 0 deletions packages/webrtc-core/src/media/local-video-track.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { createMockedStream } from '../util/test-utils';
import { LocalVideoTrack } from './local-video-track';
import MediaStreamStub from '../mocks/media-stream-stub';
import { createBrowserMock } from '../mocks/create-browser-mock';
/**
* A dummy LocalVideoTrack implementation so we can instantiate it for testing.
*/
class TestLocalVideoTrack extends LocalVideoTrack {}

describe('LocalVideoTrack', () => {
createBrowserMock(MediaStreamStub, 'MediaStream');
const mockStream = createMockedStream();
let localVideoTrack: TestLocalVideoTrack;
beforeEach(() => {
localVideoTrack = new TestLocalVideoTrack(mockStream.getTracks()[0]);
});

it('Should call applyConstraints on track when setEncoderConstaints is called', () => {
expect.assertions(2);
const encoderConstraints = { frameRate: 30, width: 1920, height: 1080 };

jest.spyOn(localVideoTrack, 'getMediaStreamTrack');
localVideoTrack.setEncoderConstraints(encoderConstraints);
expect(localVideoTrack.getMediaStreamTrack).toHaveBeenCalledTimes(1);
expect(mockStream.getTracks()[0].applyConstraints).toHaveBeenCalledWith(encoderConstraints);
});
});
8 changes: 1 addition & 7 deletions packages/webrtc-core/src/media/local-video-track.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,11 @@ type BaseVideoConstraints = Pick<
MediaTrackConstraints,
'aspectRatio' | 'height' | 'width' | 'frameRate' | 'deviceId'
>;

type BaseDisplayConstraints = Pick<
MediaTrackConstraints,
'aspectRatio' | 'height' | 'width' | 'frameRate' | 'deviceId' | 'suppressLocalAudioPlayback'
>;

export interface CameraConstraints extends BaseVideoConstraints {
facingMode?: FacingMode;
}

export interface DisplayConstraints extends BaseDisplayConstraints {
export interface DisplayConstraints extends BaseVideoConstraints {
displaySurface?: DisplaySurface;
logicalSurface?: boolean;
}
Expand Down
2 changes: 2 additions & 0 deletions packages/webrtc-core/src/mocks/media-stream-track-stub.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ class MediaStreamTrackStub {
removeEventListener(event: string, handler: any): void {
this.eventListeners.delete(event);
}

applyConstraints(mediaTrackConstaints: MediaTrackConstraints): void {}
}

/**
Expand Down

0 comments on commit 95547e1

Please sign in to comment.