ima-ui-atoms
Version:
IMA.js UI React atoms
270 lines (251 loc) • 9.59 kB
JavaScript
"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);
});
});
});