react-jplayer
Version:
Html5 audio and video player library for React
85 lines (73 loc) • 2.35 kB
JSX
import React from 'react';
import expect from 'expect';
import Media from './media';
import Events from './events/eventsContainer';
import Track from './track/track';
import componentSetup from '../../util/specHelpers/componentSetup.spec';
import { classes } from '../../util/constants';
const events = {
onAbort: expect.createSpy(),
onCanPlay: expect.createSpy(),
onCanPlayThrough: expect.createSpy(),
onDurationChange: expect.createSpy(),
onEmptied: expect.createSpy(),
onEncrypted: expect.createSpy(),
onEnded: expect.createSpy(),
onError: expect.createSpy(),
onLoadedData: expect.createSpy(),
onLoadedMetadata: expect.createSpy(),
onLoadStart: expect.createSpy(),
onPause: expect.createSpy(),
onPlay: expect.createSpy(),
onPlaying: expect.createSpy(),
onProgress: expect.createSpy(),
onRateChange: expect.createSpy(),
onSeeked: expect.createSpy(),
onSeeking: expect.createSpy(),
onStalled: expect.createSpy(),
onSuspend: expect.createSpy(),
onTimeUpdate: expect.createSpy(),
onVolumeChange: expect.createSpy(),
onWaiting: expect.createSpy(),
};
const setup = props => componentSetup(Media, {
setCurrentMedia: expect.createSpy(),
updateMediaStatus: expect.createSpy(),
tracks: [],
children: <div />,
...events,
...props,
});
describe('Media', () => {
describe('Events', () => {
it('passes updateMediaStatus', () => {
const { props, wrapper } = setup();
expect(wrapper.prop('updateMediaStatus')).toBe(props.updateMediaStatus);
});
Object.keys(events).forEach((key) => {
it(`passes ${key} to Events`, () => {
const { wrapper } = setup({ require });
expect(wrapper.prop(key)).toBe(events[key]);
});
});
});
it('renders children as a child of Events', () => {
const { wrapper } = setup();
expect(wrapper.find(Events).find(`.${classes.MEDIA}`).exists()).toBe(true);
});
it('renders tracks as childrens child', () => {
const tracks = [
{
default: true,
kind: 'subtitles',
src: 'www.test.vrt',
label: 'Video Subtitles',
srclang: 'en',
},
];
const { wrapper } = setup({ tracks });
const mediaChildren = wrapper.find(`.${classes.MEDIA}`).children();
expect(mediaChildren.length).toBe(1);
expect(mediaChildren.type()).toBe(Track);
});
});