UNPKG

@shopgate/pwa-common

Version:

Common library for the Shopgate Connect PWA.

3 lines 2.23 kB
function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}import React from'react';import{shallow}from'enzyme';import{embeddedMedia}from'@shopgate/pwa-common/collections';import EmbeddedMedia from"./index";jest.mock('@shopgate/pwa-common/collections',function(){return{embeddedMedia:{getHasPendingProviders:jest.fn(),providers:new Set([{isPending:false,remoteScriptUrl:'http://foo.bar'},{isPending:true,remoteScriptUrl:'http://bar.foo',onScriptLoaded:jest.fn()}])}};});describe('<EmbeddedMedia />',function(){beforeEach(function(){jest.clearAllMocks();});it('should return children',function(){embeddedMedia.getHasPendingProviders.mockReturnValueOnce(false);var wrapper=shallow(React.createElement(EmbeddedMedia,null,React.createElement("div",null,"Children")));expect(wrapper.html()).toEqual('<div>Children</div>');});it.skip('should render Helmet with a script',function(){embeddedMedia.getHasPendingProviders.mockReturnValueOnce(true);var wrapper=shallow(React.createElement(EmbeddedMedia,null,React.createElement("div",null,"Content with embedded media (youtube, vimeo, etc)")));var helmetProps=wrapper.find('HelmetWrapper').props();expect(helmetProps).toEqual({defer:true,encodeSpecialCharacters:true,onChangeClientState:function onChangeClientState(){},script:[]});var scriptTags=[{onload:jest.fn(),getAttribute:jest.fn().mockReturnValue('http://bar.foo')}];// Invoke helmet cb helmetProps.onChangeClientState(null,{scriptTags:scriptTags});// Invoke onload on script scriptTags[0].onload();var _embeddedMedia$provid=_slicedToArray(embeddedMedia.providers,2),secondProvider=_embeddedMedia$provid[1];expect(secondProvider.onScriptLoaded).toHaveBeenCalledTimes(1);});});