codevise/pageflow

View on GitHub
entry_types/paged/packages/pageflow-paged-react/src/media/components/__spec__/PageFilePlayer-spec.jsx

Summary

Maintainability
A
2 hrs
Test Coverage
import {PageFilePlayer} from '../PageFilePlayer';

import {shallow} from 'enzyme';

describe('PageFilePlayer', () => {
  it('renders player component if file is ready and page is is prepared', () => {
    const Player = function() {};
    const Preload = function() {};
    const file = {isReady: true};

    const wrapper = shallow(<PageFilePlayer file={file}
                                            pageIsPrepared={true}
                                            playerComponent={Player}
                                            preloadComponent={Preload} />);

    expect(wrapper).toContainMatchingElement(Player);
  });

  it('renders placeholder if page is is prepared but file not ready', () => {
    const Player = function() {};
    const Preload = function() {};
    const file = {isReady: false};

    const wrapper = shallow(<PageFilePlayer file={file}
                                            pageIsPrepared={true}
                                            playerComponent={Player}
                                            preloadComponent={Preload} />);

    expect(wrapper).toContainMatchingElement('noscript');
  });

  it('renders preload component if file is ready and page is preloaded', () => {
    const Player = function() {};
    const Preload = function() {};
    const file = {isReady: true};

    const wrapper = shallow(<PageFilePlayer file={file}
                                            pageIsPrepared={false}
                                            pageIsPreloaded={true}
                                            playerComponent={Player}
                                            preloadComponent={Preload} />);

    expect(wrapper).toContainMatchingElement(Preload);
  });

  it('renders placeholder if page is is preloaded but file not ready', () => {
    const Player = function() {};
    const Preload = function() {};
    const file = {isReady: false};

    const wrapper = shallow(<PageFilePlayer file={file}
                                            pageIsPrepared={false}
                                            pageIsPreloaded={true}
                                            playerComponent={Player}
                                            preloadComponent={Preload} />);

    expect(wrapper).toContainMatchingElement('noscript');
  });

  it('renders placeholder if page is is preloaded but preload component not present', () => {
    const Player = function() {};
    const file = {isReady: true};

    const wrapper = shallow(<PageFilePlayer file={file}
                                            pageIsPrepared={false}
                                            pageIsPreloaded={true}
                                            playerComponent={Player} />);

    expect(wrapper).toContainMatchingElement('noscript');
  });

  it('supports rendering structured data component', () => {
    const Player = function() {};
    const Preload = function() {};
    const StructuredData = function() {};
    const file = {isReady: true};

    const wrapper = shallow(<PageFilePlayer file={file}
                                            pageIsPrepared={false}
                                            playerComponent={Player}
                                            preloadComponent={Preload}
                                            structuredDataComponent={StructuredData} />);

    expect(wrapper).toContainMatchingElement(StructuredData);
    expect(wrapper.find(StructuredData)).toHaveProp('file', file);
  });
});