Skip to content

Commit 5219541

Browse files
committed
beef up Link tests
1 parent 51579e0 commit 5219541

File tree

1 file changed

+48
-11
lines changed

1 file changed

+48
-11
lines changed

modules/components/__tests__/Link-test.js

Lines changed: 48 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@ var Router = require('../../index');
55
var ReactTestUtils = React.addons.TestUtils;
66
var Route = require('../Route');
77
var Link = require('../Link');
8+
var RouteHandler = require('../RouteHandler');
89
var TestLocation = require('../../locations/TestLocation');
9-
var { Foo } = require('../../__tests__/TestHandlers');
10+
var { Foo, Bar } = require('../../__tests__/TestHandlers');
1011
var { click } = React.addons.TestUtils.Simulate;
1112

1213
describe('A Link', function () {
@@ -36,25 +37,61 @@ describe('A Link', function () {
3637
});
3738

3839
describe('when its route is active', function () {
39-
it('has an active class name', function () {
40+
it('has an active class name', function (done) {
4041
var LinkHandler = React.createClass({
4142
render: function () {
42-
return <Link
43-
to="foo"
44-
className="dontKillMe"
45-
activeClassName="highlight"
46-
>Link</Link>;
43+
return (
44+
<div>
45+
<Link
46+
to="foo"
47+
className="dontKillMe"
48+
activeClassName="highlight"
49+
>Link</Link>
50+
<RouteHandler/>
51+
</div>
52+
);
4753
}
4854
});
4955

50-
var routes = <Route name="foo" handler={LinkHandler} />;
56+
var routes = (
57+
<Route path="/" handler={LinkHandler}>
58+
<Route name="foo" handler={Foo} />
59+
<Route name="bar" handler={Bar} />
60+
</Route>
61+
);
62+
5163
var div = document.createElement('div');
5264
TestLocation.history = ['/foo'];
65+
var steps = [];
66+
67+
function assertActive () {
68+
var a = div.querySelector('a');
69+
expect(a.className.split(' ').sort().join(' ')).toEqual('dontKillMe highlight');
70+
}
71+
72+
function assertInactive () {
73+
var a = div.querySelector('a');
74+
expect(a.className).toEqual('dontKillMe');
75+
}
76+
77+
steps.push(() => {
78+
assertActive();
79+
TestLocation.push('/bar');
80+
});
81+
82+
steps.push(() => {
83+
assertInactive();
84+
TestLocation.push('/foo');
85+
});
86+
87+
steps.push(() => {
88+
assertActive();
89+
done();
90+
});
5391

5492
Router.run(routes, TestLocation, function (Handler) {
55-
React.render(<Handler/>, div, function () {
56-
var a = div.querySelector('a');
57-
expect(a.className.split(' ').sort().join(' ')).toEqual('dontKillMe highlight');
93+
React.render(<Handler/>, div, () => {
94+
steps.shift()();
5895
});
5996
});
6097
});

0 commit comments

Comments
 (0)