UNPKG

meetup-web-mocks

Version:
78 lines (62 loc) 2.46 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.routeRenderer = exports.createFakeStore = exports.findComponentsWithType = undefined; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _reactAddonsTestUtils = require('react-addons-test-utils'); var _reactAddonsTestUtils2 = _interopRequireDefault(_reactAddonsTestUtils); var _RouterContext = require('react-router/lib/RouterContext'); var _RouterContext2 = _interopRequireDefault(_RouterContext); var _match = require('react-router/lib/match'); var _match2 = _interopRequireDefault(_match); var _reactIntl = require('react-intl'); var _reactRedux = require('react-redux'); var _app = require('./app'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var findComponentsWithType = exports.findComponentsWithType = function findComponentsWithType(tree, typeString) { return _reactAddonsTestUtils2.default.findAllInRenderedTree(tree, function (component) { return component && component.constructor.name === typeString; }); }; var createFakeStore = exports.createFakeStore = function createFakeStore(fakeData) { return { getState: function getState() { return fakeData; }, dispatch: function dispatch() {}, subscribe: function subscribe() {} }; }; /** * Curry a function that takes a set of React Router routes and a location to * render, and return a Promise that resolves with the rendered React app * * @example * ``` * const renderLocation = routeRenderer(routes); * renderLocation('/').then(app => ...); * renderLocation('/foo').then(app => ...); * ``` */ var routeRenderer = exports.routeRenderer = function routeRenderer(routes) { return function (location) { var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _app.MOCK_APP_STATE; return new Promise(function (resolve, reject) { return (0, _match2.default)({ location: location, routes: routes }, function (err, redirectLocation, renderProps) { var FAKE_STORE = createFakeStore(state); var app = _reactAddonsTestUtils2.default.renderIntoDocument(_react2.default.createElement( _reactIntl.IntlProvider, { locale: 'en' }, _react2.default.createElement( _reactRedux.Provider, { store: FAKE_STORE }, _react2.default.createElement(_RouterContext2.default, renderProps) ) )); resolve(app); }); }); }; };