Skip to content

Commit ec4942f

Browse files
committed
Refactor tests
1 parent 207c3e8 commit ec4942f

File tree

8 files changed

+134
-25
lines changed

8 files changed

+134
-25
lines changed

.zuul.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
ui: mocha-bdd
22
browsers:
33
- name: chrome
4-
version: 27..latest
4+
version: '27..latest'
55
- name: ie
6-
version: 9..latest
6+
version: '9..latest'
77
- name: safari
8-
version: 6..latest
8+
version: '6..latest'
99
- name: firefox
10-
version: 24..latest
10+
version: '24..latest'
1111
- name: iphone
12-
version: 6..latest
12+
version: '6.0..latest'
1313
- name: ipad
14-
version: 6..latest
14+
version: '6.0..latest'

Makefile

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,17 @@ test: test-unit test-server
1313
@echo "The browser test suite should be run before commit. Run 'make test-local' to run it."
1414

1515
test-unit:
16-
@./node_modules/.bin/mocha -R spec -b tests/matchRoutes.js
16+
@./node_modules/.bin/mocha -R spec -b tests/unit/*.js
1717

1818
test-server:
19-
@./node_modules/.bin/mocha -R spec -b tests/server.js
19+
@./node_modules/.bin/mocha -R spec -b tests/server/*.js
2020

2121
test-local:
22-
@./node_modules/.bin/babel tests/browser-jsx.jsx > tests/browser-jsx.js
23-
@./node_modules/.bin/zuul --local 3000 -- tests/browser.js tests/browser-jsx.js
22+
@./node_modules/.bin/babel tests/browser/browser-jsx.jsx > tests/browser/browser-jsx.js
23+
@./node_modules/.bin/zuul --local 3000 -- tests/browser/*.js
2424

2525
test-cloud:
26-
@./node_modules/.bin/zuul -- tests/browser.js
26+
@./node_modules/.bin/zuul -- tests/browser/*.js
2727

2828
release-patch: test lint
2929
@$(call release,patch)

tests/QueryStringKeyEnvironment.js renamed to tests/browser/QueryStringKeyEnvironment.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
"use strict";
22

3-
var assert = require('assert');
4-
var QuerystringKeyEnvironment = require('../lib/environment/QuerystringKeyEnvironment');
3+
var assert = require('assert');
4+
var QuerystringKeyEnvironment = require('../../lib/environment/QuerystringKeyEnvironment');
55

66
describe('QuerystringKeyEnvironment', function() {
77

8-
var env;
8+
var env, origPath;
99

1010
beforeEach(function() {
1111
env = new QuerystringKeyEnvironment('key');
12+
origPath = window.location.pathname;
1213
});
1314

1415
afterEach(function() {
15-
window.history.pushState({}, '', '/');
16+
window.history.pushState({}, '', origPath);
1617
});
1718

1819
it('updates the corresponding key in querystring on setPath', function() {

tests/browser-jsx.js renamed to tests/browser/browser-jsx.js

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,7 @@
22
var assert = require('assert');
33
var React = require('react');
44
var ReactDOM = React; // For 0.13
5-
if (parseInt(React.version.split('.')[1], 10) >= 14) {
6-
// For 0.14+
7-
ReactDOM = require('react-dom');
8-
}
9-
var Router = require('../index');
5+
var Router = require('../../index');
106

117
var historyAPI = window.history !== undefined && window.history.pushState !== undefined;
128

tests/browser/browser-jsx.jsx

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
'use strict';
2+
var assert = require('assert');
3+
var React = require('react');
4+
var ReactDOM = React; // For 0.13
5+
var Router = require('../../index');
6+
7+
var historyAPI = (
8+
window.history !== undefined &&
9+
window.history.pushState !== undefined
10+
);
11+
12+
var host, app, router;
13+
14+
var timeout = 250;
15+
16+
function delay(ms, func) {
17+
if (func === undefined) {
18+
func = ms;
19+
ms = timeout;
20+
}
21+
setTimeout(func, ms);
22+
}
23+
24+
function getRenderedContent() {
25+
var content = app.refs.content || app.refs.router;
26+
var node = ReactDOM.findDOMNode(content);
27+
return node.textContent || node.innerText;
28+
}
29+
30+
function assertRendered(text) {
31+
assert.equal(
32+
getRenderedContent(),
33+
text
34+
);
35+
}
36+
37+
function cleanUp(done) {
38+
ReactDOM.unmountComponentAtNode(host);
39+
if (historyAPI) {
40+
window.history.pushState({}, '', '/__zuul');
41+
}
42+
window.location.hash = '';
43+
delay(done);
44+
}
45+
46+
function setUp(App) {
47+
return function() {
48+
host = document.createElement('div');
49+
app = ReactDOM.render(React.createElement(App), host);
50+
router = app.refs.router;
51+
};
52+
}
53+
describe('JSX + Routing with async components', function() {
54+
55+
if (!historyAPI) return;
56+
57+
var Main = React.createClass({
58+
render: function() {
59+
return <div>Main</div>;
60+
}
61+
});
62+
63+
var Page1 = React.createClass({
64+
render: function() {
65+
return <div>Page1</div>;
66+
}
67+
});
68+
69+
var Page2 = React.createClass({
70+
render: function() {
71+
return <div>{this.props.text}</div>;
72+
}
73+
});
74+
75+
var App = React.createClass({
76+
render: function() {
77+
var Locations = Router.Locations;
78+
var Location = Router.Location;
79+
return (
80+
<Locations ref='router' className='App'>
81+
<Location path='/__zuul' handler={Main} ref='main'/>
82+
<Location path='/__zuul/page1' handler={Page1} ref='page1'/>
83+
<Location path='/__zuul/:text' handler={Page2} ref='page2'/>
84+
</Locations>
85+
);
86+
}
87+
});
88+
89+
90+
beforeEach(setUp(App));
91+
afterEach(cleanUp);
92+
93+
it('jsx: renders component', function() {
94+
assertRendered('Main');
95+
});
96+
97+
it('jsx: renders another route', function(done) {
98+
router.navigate('/__zuul/page1', function(err) {
99+
if (err) return done(err);
100+
assertRendered('Page1');
101+
done();
102+
});
103+
});
104+
105+
it('jsx: renders a route with params', function(done) {
106+
router.navigate('/__zuul/page2', function(err) {
107+
if (err) return done(err);
108+
assertRendered('page2');
109+
done();
110+
});
111+
});
112+
});

tests/browser.js renamed to tests/browser/browser.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ var React = require('react');
44
var ReactDOM = require('react-dom');
55
var ReactTestUtils = require('react/lib/ReactTestUtils');
66
var EventConstants = require('react/lib/EventConstants');
7-
var Router = require('../index');
8-
var CaptureClicks = React.createFactory(require('../lib/CaptureClicks'));
7+
var Router = require('../../index');
8+
var CaptureClicks = React.createFactory(require('../../lib/CaptureClicks'));
99
var Location = React.createFactory(Router.Location);
1010
var Locations = React.createFactory(Router.Locations);
1111
var NotFound = React.createFactory(Router.NotFound);

tests/server.js renamed to tests/server/server.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
var assert = require('assert');
33
var React = require('react');
44
var ReactDOMServer = require('react-dom/server');
5-
var Router = require('../index');
5+
var Router = require('../../index');
66
var Locations = Router.Locations;
77
var Pages = Router.Pages;
88
var Location = Router.Location;

tests/matchRoutes.js renamed to tests/unit/matchRoutes.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
'use strict';
22
var assert = require('assert');
3-
var matchRoutes = require('../lib/matchRoutes');
3+
var matchRoutes = require('../../lib/matchRoutes');
44
var React = require('react');
5-
var Router = require('../');
5+
var Router = require('../../');
66
var Location = React.createFactory(Router.Location);
77
var NotFound = React.createFactory(Router.NotFound);
88

0 commit comments

Comments
 (0)