| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md.
- */
- import MediaRegistry from '../src/mediaregistry';
- import log from '@ckeditor/ckeditor5-utils/src/log';
- describe( 'MediaRegistry', () => {
- describe( 'constructor()', () => {
- it( 'filters out providers that should be removed', () => {
- const providers = [
- { name: 'dailymotion', url: [] },
- { name: 'spotify', url: [] },
- { name: 'youtube', url: [] },
- { name: 'vimeo', url: [] },
- ];
- const removeProviders = [ 'spotify' ];
- const mediaRegistry = new MediaRegistry( {}, { providers, removeProviders } );
- const availableProviders = mediaRegistry.providerDefinitions.map( provider => provider.name );
- expect( availableProviders ).to.deep.equal( [ 'dailymotion', 'youtube', 'vimeo' ] );
- } );
- it( 'allows extending providers using `extraProviders` option', () => {
- const providers = [
- { name: 'dailymotion', url: [] },
- { name: 'youtube', url: [] },
- { name: 'vimeo', url: [] },
- ];
- const extraProviders = [
- { name: 'spotify', url: [] },
- ];
- const mediaRegistry = new MediaRegistry( {}, { providers, extraProviders } );
- const availableProviders = mediaRegistry.providerDefinitions.map( provider => provider.name );
- expect( availableProviders ).to.deep.equal( [ 'dailymotion', 'youtube', 'vimeo', 'spotify' ] );
- } );
- it( 'logs a warning when provider\'s name is not defined', () => {
- const logStub = sinon.stub( log, 'warn' );
- const providers = [
- { url: [ /dailymotion\.com/ ] },
- { name: 'spotify', url: [] },
- { name: 'youtube', url: [] },
- { name: 'vimeo', url: [] },
- ];
- const mediaRegistry = new MediaRegistry( {}, { providers } );
- const availableProviders = mediaRegistry.providerDefinitions.map( provider => provider.name );
- expect( availableProviders ).to.deep.equal( [ 'spotify', 'youtube', 'vimeo' ] );
- expect( logStub.calledOnce ).to.equal( true );
- expect( logStub.firstCall.args[ 0 ] ).to.equal(
- 'media-embed-no-provider-name: The configured media provider has no name and cannot be used.'
- );
- expect( logStub.firstCall.args[ 1 ] ).to.deep.equal( { provider: { url: [ /dailymotion\.com/ ] } } );
- } );
- } );
- describe( '_getMedia()', () => {
- let mediaRegistry, htmlSpy;
- beforeEach( () => {
- htmlSpy = sinon.spy();
- mediaRegistry = new MediaRegistry( {}, {
- providers: [
- {
- name: 'youtube',
- url: [
- /^youtube\.com\/watch\?v=([\w-]+)/,
- /^youtube\.com\/v\/([\w-]+)/,
- /^youtube\.com\/embed\/([\w-]+)/,
- /^youtu\.be\/([\w-]+)/
- ],
- html: htmlSpy
- }
- ]
- } );
- } );
- it( 'works fine for url with sub-domain and the protocol', () => {
- const media = mediaRegistry._getMedia( 'https://www.youtube.com/watch?v=euqbMkM-QQk' );
- expect( media ).is.not.null;
- expect( media.url ).to.equal( 'https://www.youtube.com/watch?v=euqbMkM-QQk' );
- } );
- it( 'works fine for url with defined protocol', () => {
- const media = mediaRegistry._getMedia( 'https://youtube.com/watch?v=euqbMkM-QQk' );
- expect( media ).is.not.null;
- expect( media.url ).to.equal( 'https://youtube.com/watch?v=euqbMkM-QQk' );
- } );
- it( 'works fine for url with sub-domain without protocol', () => {
- const media = mediaRegistry._getMedia( 'www.youtube.com/watch?v=euqbMkM-QQk' );
- expect( media ).is.not.null;
- expect( media.url ).to.equal( 'https://www.youtube.com/watch?v=euqbMkM-QQk' );
- } );
- it( 'works fine for url without protocol', () => {
- const media = mediaRegistry._getMedia( 'youtube.com/watch?v=euqbMkM-QQk' );
- expect( media ).is.not.null;
- expect( media.url ).to.equal( 'https://youtube.com/watch?v=euqbMkM-QQk' );
- } );
- it( 'passes the entire match array to render function', () => {
- const media = mediaRegistry._getMedia( 'https://www.youtube.com/watch?v=euqbMkM-QQk' );
- media._getContentHtml();
- expect( htmlSpy.calledOnce ).to.equal( true );
- expect( htmlSpy.firstCall.args[ 0 ] ).to.deep.equal( [
- 'youtube.com/watch?v=euqbMkM-QQk',
- 'euqbMkM-QQk'
- ] );
- } );
- } );
- } );
|