UNPKG

@fakes/media-devices

Version:

A interactive fake implementation of MediaDevices interface in the browser for testing

57 lines (49 loc) 2.16 kB
import { defaultContext } from './context' import { MediaStreamFake, mediaStreamId } from './MediaStreamFake' import { anyMediaStreamTrack } from './MediaStreamTrackMother' describe('MediaStreamFake', () => { test('create a new one', () => { expect(new MediaStreamFake(defaultContext(), mediaStreamId(), [])).toBeDefined() }) test('do not leak internal state ', () => { const fake = new MediaStreamFake(defaultContext(), mediaStreamId(), []) fake.getTracks().push(anyMediaStreamTrack()) expect(fake.getTracks()).toHaveLength(0) }) test('derive active state from contained tracks', () => { const liveTrack = anyMediaStreamTrack({ readyState: 'live' }) const fake = new MediaStreamFake(defaultContext(), mediaStreamId(), [liveTrack]) expect(fake.active).toBe(true) liveTrack.stop() expect(fake.active).toBe(false) }) test('filtered tracks', () => { const audioTrack = anyMediaStreamTrack({ kind: 'audio' }) const videoTrack = anyMediaStreamTrack({ kind: 'video' }) const fake = new MediaStreamFake(defaultContext(), mediaStreamId(), [audioTrack, videoTrack]) expect(fake.getAudioTracks()).toEqual([audioTrack]) expect(fake.getVideoTracks()).toEqual([videoTrack]) }) test('return track by id', () => { const wantedTrack = anyMediaStreamTrack({ id: 'wanted' }) const fake = new MediaStreamFake(defaultContext(), mediaStreamId(), [wantedTrack]) expect(fake.getTrackById('bogus')).toBe(null) expect(fake.getTrackById('wanted')).toBe(wantedTrack) }) test('remove track', () => { const one = anyMediaStreamTrack() const two = anyMediaStreamTrack() const three = anyMediaStreamTrack() const fake = new MediaStreamFake(defaultContext(), mediaStreamId(), [one, two, three]) const notIncluded = anyMediaStreamTrack() fake.removeTrack(notIncluded) expect(fake.getTracks()).toIncludeSameMembers([one, two, three]) fake.removeTrack(two) expect(fake.getTracks()).toIncludeSameMembers([one, three]) }) }) describe('mediaStreamId', () => { test('length of 36 characters', () => { expect(mediaStreamId()).toHaveLength(36) }) })