anorgatarrak-wordpress-theme/node_modules/mediaelement/test/unit/renderer.spec.js

140 lines
2.9 KiB
JavaScript

'use strict';
import {renderer} from '../../src/js/core/renderer';
import {expect} from 'chai';
describe('Renderers', () => {
let
renderers,
mockRenderer = {
name: 'mock',
options: {
prefix: 'mock'
},
canPlayType: (type) => {
let validMedia = ['video/mime-3'];
return validMedia.indexOf(type) > -1;
}
},
empty = null
;
describe('#order', () => {
it('returns the order', () => {
expect(renderer.order).to.deep.equal([]);
});
it('can be changed', () => {
renderer.order = ['html5', 'flash_hls', 'flash_video', 'native_hls'];
expect(renderer.order).to.deep.equal(['html5', 'flash_hls', 'flash_video', 'native_hls']);
});
it('only accepts an array of strings', () => {
let a = () => {
renderer.order = 'foo';
};
expect(a).to.throw(Error);
});
});
describe('#renderers', () => {
it('returns the renderers', () => {
expect(renderer.renderers).to.deep.equal({});
});
it('can be changed', () => {
renderer.renderers = mockRenderer;
expect(renderer.renderers).to.deep.equal(mockRenderer);
expect(() => {
renderer.renderers = 'dummy';
}).to.throw(Error);
});
it('only accepts an array of objects', () => {
expect(() => {
renderer.renderers = 'foo';
}).to.throw(Error);
expect(() => {
renderer.renderers = undefined;
}).to.throw(TypeError);
expect(() => {
renderer.renderers = mockRenderer;
}).to.not.throw(Error);
});
});
describe('#add', () => {
it('can add a renderer as an object with at least `name` property', () => {
// Proper structure of renderer
const a = () => {
renderer.add(mockRenderer);
};
expect(a).to.not.throw(Error);
});
it('cannot add a renderer as an object without at least `name` property', () => {
// Incorrect structure
const b = () => {
renderer.add({});
};
expect(b).to.throw(Error);
});
});
describe('#select', () => {
const mediaFiles = [
{type: 'video/mime-1', src: '/path/to/media/1'},
{type: 'video/mime-2', src: '/path/to/media/2'},
{type: 'video/mime-3', src: '/path/to/media/3'},
];
beforeEach(() => {
// renderers = new Renderer();
renderer.add(mockRenderer);
});
it('selects a renderer based on media files', () => {
const a = renderer.select(mediaFiles);
expect(a).to.deep.equal({rendererName: 'mock', src: '/path/to/media/3'});
});
it('selects a renderer based on media files from argument `renderers`', () => {
const a = renderer.select(mediaFiles, ['mock', 'dummy']);
expect(a).to.deep.equal({rendererName: 'mock', src: '/path/to/media/3'});
});
it('returns null if no renderer was selected', () => {
const b = renderer.select([{type: 'video/mime-4', src: '/path/to/media/4'}]);
expect(b === null).to.be.true;
});
it('returns null if no renderer was selected from argument `renderers`', () => {
const a = renderer.select(mediaFiles, ['dummy']);
expect(a === null).to.be.true;
});
});
});