meetup-web-mocks
Version:
Meetup Web Mocks
78 lines (62 loc) • 2.46 kB
JavaScript
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);
});
});
};
};
;