/* * Helpers for using enzyme and react-test-renderer with react-intl * Directly from https://github.com/yahoo/react-intl/wiki/Testing-with-React-Intl */ import React from 'react'; import renderer from 'react-test-renderer'; import {IntlProvider, intlShape} from 'react-intl'; import {mount, shallow} from 'enzyme'; const intlProvider = new IntlProvider({locale: 'en'}, {}); const {intl} = intlProvider.getChildContext(); const nodeWithIntlProp = node => React.cloneElement(node, {intl}); const shallowWithIntl = (node, {context} = {}) => shallow( nodeWithIntlProp(node), { context: Object.assign({}, context, {intl}) } ); const mountWithIntl = (node, {context, childContextTypes} = {}) => mount( nodeWithIntlProp(node), { context: Object.assign({}, context, {intl}), childContextTypes: Object.assign({}, {intl: intlShape}, childContextTypes) } ); // react-test-renderer component for use with snapshot testing const componentWithIntl = (children, props = {locale: 'en'}) => renderer.create( {children} ); export { componentWithIntl, shallowWithIntl, mountWithIntl };