UNPKG

ima-ui-atoms

Version:
270 lines (251 loc) 9.59 kB
"use strict"; var _enzyme = require("enzyme"); var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _toMock = require("to-mock"); var _classnames = _interopRequireDefault(require("classnames")); var UIAtoms = _interopRequireWildcard(require("../main")); var _UIComponentHelper = _interopRequireDefault(require("../UIComponentHelper")); var _ComponentPositions = _interopRequireDefault(require("../ComponentPositions")); var _Visibility = _interopRequireDefault(require("../Visibility")); var _infiniteCircle = require("infinite-circle"); var _jsdom = require("jsdom"); var _router2 = _interopRequireDefault(require("../mocks/router")); var _window2 = _interopRequireDefault(require("../mocks/window")); var _settings2 = _interopRequireDefault(require("../mocks/settings")); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const jsdom = new _jsdom.JSDOM('<!doctype html><html><body></body></html>'); const { window } = jsdom; global.window = window; global.document = window.document; global.navigator = { userAgent: 'node.js' }; const visibility = (0, _toMock.toMockedInstance)(_Visibility.default); const mockPosition = { height: 0 }; const componentPositions = (0, _toMock.toMockedInstance)(_ComponentPositions.default, { getWindowViewportRect: () => mockPosition }); const infinite = (0, _toMock.toMockedInstance)(_infiniteCircle.Infinite); const childContextTypes = { $Utils: _propTypes.default.shape({}), $Settings: _propTypes.default.shape({}) }; function getComponentOptions(overrideSettings = {}) { const $Settings = Object.assign({}, _settings2.default, overrideSettings); const $UIComponentHelper = new _UIComponentHelper.default(_router2.default, _window2.default, componentPositions, visibility, infinite, _classnames.default, $Settings); const context = { $Utils: { $Settings, $UIComponentHelper } }; const mountOptions = { context, childContextTypes, someProp: true }; return mountOptions; } describe('UIAtoms mount rendering', () => { let wrapper = null; afterEach(() => { if (wrapper) { wrapper.unmount(); } }); describe('should render atoms with noscript tag: ', () => { let mountOptions = getComponentOptions(); it('should render Image with noscript tag', () => { const Component = UIAtoms.Image; wrapper = (0, _enzyme.mount)(_react.default.createElement(Component, { src: "example.jpg" }), mountOptions); expect(wrapper.html()).toMatchSnapshot(); expect(wrapper.find('noscript').length).toEqual(1); }); it('should render Video with noscript tag', () => { const Component = UIAtoms.Video; wrapper = (0, _enzyme.mount)(_react.default.createElement(Component, { src: "example.mov" }), mountOptions); expect(wrapper.html()).toMatchSnapshot(); expect(wrapper.find('noscript').length).toEqual(1); }); it('should render Iframe with noscript tag', () => { const Component = UIAtoms.Iframe; wrapper = (0, _enzyme.mount)(_react.default.createElement(Component, { src: "example.html" }), mountOptions); expect(wrapper.html()).toMatchSnapshot(); expect(wrapper.find('noscript').length).toEqual(1); }); }); describe('should render atoms without noscript tag - disabled by props: ', () => { let mountOptions = getComponentOptions(); it('Image without noscript tag', () => { const Component = UIAtoms.Image; wrapper = (0, _enzyme.mount)(_react.default.createElement(Component, { src: "example.jpg", disableNoScript: true }), mountOptions); expect(wrapper.html()).toMatchSnapshot(); expect(wrapper.find('noscript').length).toEqual(0); }); it('Video without noscript tag', () => { const Component = UIAtoms.Video; wrapper = (0, _enzyme.mount)(_react.default.createElement(Component, { src: "example.mov", disableNoScript: true }), mountOptions); expect(wrapper.html()).toMatchSnapshot(); expect(wrapper.find('noscript').length).toEqual(0); }); it('Iframe without noscript tag', () => { const Component = UIAtoms.Iframe; wrapper = (0, _enzyme.mount)(_react.default.createElement(Component, { src: "example.html", disableNoScript: true }), mountOptions); expect(wrapper.html()).toMatchSnapshot(); expect(wrapper.find('noscript').length).toEqual(0); }); }); describe('should render atoms without noscript tag - disabled by $Settings: ', () => { let mountOptions = getComponentOptions({ plugin: { uiAtoms: { useIntersectionObserver: { iframes: true, images: true, videos: true }, disableNoScript: { iframes: true, images: true, videos: true } } } }); it('Image without noscript tag', () => { const Component = UIAtoms.Image; wrapper = (0, _enzyme.mount)(_react.default.createElement(Component, { src: "example.jpg" }), mountOptions); expect(wrapper.html()).toMatchSnapshot(); expect(wrapper.find('noscript').length).toEqual(0); }); it('Video without noscript tag', () => { const Component = UIAtoms.Video; wrapper = (0, _enzyme.mount)(_react.default.createElement(Component, { src: "example.mov" }), mountOptions); expect(wrapper.html()).toMatchSnapshot(); expect(wrapper.find('noscript').length).toEqual(0); }); it('Iframe without noscript tag', () => { const Component = UIAtoms.Iframe; wrapper = (0, _enzyme.mount)(_react.default.createElement(Component, { src: "example.html" }), mountOptions); expect(wrapper.html()).toMatchSnapshot(); expect(wrapper.find('noscript').length).toEqual(0); }); }); describe('should render atoms with noscript tag - disabled by $Settings, overriden by props: ', () => { let mountOptions = getComponentOptions({ plugin: { uiAtoms: { useIntersectionObserver: { iframes: true, images: true, videos: true }, disableNoScript: { iframes: true, images: true, videos: true } } } }); it('Image without noscript tag', () => { const Component = UIAtoms.Image; wrapper = (0, _enzyme.mount)(_react.default.createElement(Component, { src: "example.jpg", disableNoScript: false }), mountOptions); expect(wrapper.html()).toMatchSnapshot(); expect(wrapper.find('noscript').length).toEqual(1); }); it('Video without noscript tag', () => { const Component = UIAtoms.Video; wrapper = (0, _enzyme.mount)(_react.default.createElement(Component, { src: "example.mov", disableNoScript: false }), mountOptions); expect(wrapper.html()).toMatchSnapshot(); expect(wrapper.find('noscript').length).toEqual(1); }); it('Iframe without noscript tag', () => { const Component = UIAtoms.Iframe; wrapper = (0, _enzyme.mount)(_react.default.createElement(Component, { src: "example.html", disableNoScript: false }), mountOptions); expect(wrapper.html()).toMatchSnapshot(); expect(wrapper.find('noscript').length).toEqual(1); }); }); describe('should render atoms without noscript tag - enabled by $Settings, overriden by props: ', () => { let mountOptions = getComponentOptions({ plugin: { uiAtoms: { useIntersectionObserver: { iframes: true, images: true, videos: true }, disableNoScript: { iframes: false, images: false, videos: false } } } }); it('Image without noscript tag', () => { const Component = UIAtoms.Image; wrapper = (0, _enzyme.mount)(_react.default.createElement(Component, { src: "example.jpg", disableNoScript: true }), mountOptions); expect(wrapper.html()).toMatchSnapshot(); expect(wrapper.find('noscript').length).toEqual(0); }); it('Video without noscript tag', () => { const Component = UIAtoms.Video; wrapper = (0, _enzyme.mount)(_react.default.createElement(Component, { src: "example.mov", disableNoScript: true }), mountOptions); expect(wrapper.html()).toMatchSnapshot(); expect(wrapper.find('noscript').length).toEqual(0); }); it('Iframe without noscript tag', () => { const Component = UIAtoms.Iframe; wrapper = (0, _enzyme.mount)(_react.default.createElement(Component, { src: "example.html", disableNoScript: true }), mountOptions); expect(wrapper.html()).toMatchSnapshot(); expect(wrapper.find('noscript').length).toEqual(0); }); }); });