@@ -5,8 +5,9 @@ var Router = require('../../index');
55var ReactTestUtils = React . addons . TestUtils ;
66var Route = require ( '../Route' ) ;
77var Link = require ( '../Link' ) ;
8+ var RouteHandler = require ( '../RouteHandler' ) ;
89var TestLocation = require ( '../../locations/TestLocation' ) ;
9- var { Foo } = require ( '../../__tests__/TestHandlers' ) ;
10+ var { Foo, Bar } = require ( '../../__tests__/TestHandlers' ) ;
1011var { click } = React . addons . TestUtils . Simulate ;
1112
1213describe ( '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