| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- /**
- * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
- */
- /* globals console */
- import MediaRegistry from '../src/mediaregistry';
- 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 consoleWarnStub = sinon.stub( console, '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( consoleWarnStub.calledOnce ).to.equal( true );
- expect( consoleWarnStub.firstCall.args[ 0 ] ).to.match( /^media-embed-no-provider-name/ );
- expect( consoleWarnStub.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._getPreviewHtml();
- expect( htmlSpy.calledOnce ).to.equal( true );
- expect( htmlSpy.firstCall.args[ 0 ] ).to.deep.equal( [
- 'youtube.com/watch?v=euqbMkM-QQk',
- 'euqbMkM-QQk'
- ] );
- } );
- } );
- } );
|