@@ -5,8 +5,9 @@ var Router = require('../../index');
5
5
var ReactTestUtils = React . addons . TestUtils ;
6
6
var Route = require ( '../Route' ) ;
7
7
var Link = require ( '../Link' ) ;
8
+ var RouteHandler = require ( '../RouteHandler' ) ;
8
9
var TestLocation = require ( '../../locations/TestLocation' ) ;
9
- var { Foo } = require ( '../../__tests__/TestHandlers' ) ;
10
+ var { Foo, Bar } = require ( '../../__tests__/TestHandlers' ) ;
10
11
var { click } = React . addons . TestUtils . Simulate ;
11
12
12
13
describe ( 'A Link' , function ( ) {
@@ -36,25 +37,61 @@ describe('A Link', function () {
36
37
} ) ;
37
38
38
39
describe ( 'when its route is active' , function ( ) {
39
- it ( 'has an active class name' , function ( ) {
40
+ it ( 'has an active class name' , function ( done ) {
40
41
var LinkHandler = React . createClass ( {
41
42
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
+ ) ;
47
53
}
48
54
} ) ;
49
55
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
+
51
63
var div = document . createElement ( 'div' ) ;
52
64
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
+ } ) ;
53
91
54
92
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 ( ) ( ) ;
58
95
} ) ;
59
96
} ) ;
60
97
} ) ;
0 commit comments