Skip to content

Commit 253bc1a

Browse files
committed
add test for keeping the right checksum
1 parent db8298a commit 253bc1a

File tree

2 files changed

+54
-1
lines changed

2 files changed

+54
-1
lines changed

modules/utils/__tests__/ServerRendering-test.js

+53
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@ var assert = require('assert');
22
var expect = require('expect');
33
var React = require('react');
44
var Link = require('../../components/Link');
5+
var Router = require('../../index');
56
var Routes = require('../../components/Routes');
67
var Route = require('../../components/Route');
78
var ServerRendering = require('../ServerRendering');
9+
var Promise = require('../Promise');
810

911
describe('ServerRendering', function () {
1012

@@ -149,4 +151,55 @@ describe('ServerRendering', function () {
149151
});
150152
});
151153

154+
describe('renderRoutesToString with async route props', function () {
155+
var div, FAKE_ENV, serverProps;
156+
157+
var Home = React.createClass({
158+
statics: {
159+
getRouteProps: function() {
160+
return {
161+
name: FAKE_ENV === 'server' ?
162+
Promise.resolve('skillet') :
163+
serverProps.root.name
164+
};
165+
}
166+
},
167+
168+
render: function () {
169+
return React.DOM.div(null, 'Hello ' + this.props.name + '!');
170+
}
171+
});
172+
173+
function switchToClient() {
174+
FAKE_ENV = 'client';
175+
}
176+
177+
beforeEach(function() {
178+
FAKE_ENV = 'server';
179+
serverProps = {};
180+
div = document.createElement('div');
181+
document.body.appendChild(div);
182+
});
183+
184+
afterEach(function() {
185+
document.body.removeChild(div);
186+
});
187+
188+
it('does not blow away HTML with async route props', function (done) {
189+
var routes = Routes({}, Route({name: 'root', path: '/', handler: Home}));
190+
Router.renderRoutesToString(routes, '/', function(err, ar, html, propData) {
191+
serverProps = propData;
192+
div.innerHTML = html;
193+
assert.ok(div.querySelector('[data-react-checksum]'));
194+
assert.ok(div.innerHTML.match('skillet'));
195+
switchToClient();
196+
React.renderComponent(routes, div, function() {
197+
assert.ok(div.querySelector('[data-react-checksum]'));
198+
assert.ok(div.innerHTML.match('skillet'));
199+
React.unmountComponentAtNode(div);
200+
done();
201+
});
202+
});
203+
});
204+
});
152205
});

modules/utils/__tests__/resolveAsyncValues-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ describe('resolveAsyncValues', function () {
4343
});
4444
});
4545

46-
describe.only('when asyncValues has more than one async value', function () {
46+
describe('when asyncValues has more than one async value', function () {
4747
it('resolves asynchronously', function (done) {
4848
var resolved = false;
4949

0 commit comments

Comments
 (0)