@@ -17,6 +17,7 @@ describe('An <IndexLink>', function () {
17
17
return (
18
18
< div >
19
19
< ul >
20
+ < li > < IndexLink id = "rootLink" to = "/" activeClassName = "active" > root</ IndexLink > </ li >
20
21
< li > < IndexLink id = "overviewLink" to = "/website" activeClassName = "active" > overview</ IndexLink > </ li >
21
22
< li > < Link id = "contactLink" to = "/website/contact" activeClassName = "active" > contact</ Link > </ li >
22
23
< li > < Link id = "productsLink" to = "/website/products" activeClassName = "active" > products</ Link > </ li >
@@ -29,6 +30,18 @@ describe('An <IndexLink>', function () {
29
30
}
30
31
}
31
32
33
+ class RootWrapper extends Component {
34
+ render ( ) {
35
+ return < div > root wrapper { this . props . children } </ div >
36
+ }
37
+ }
38
+
39
+ class RootPage extends Component {
40
+ render ( ) {
41
+ return < div > website root</ div >
42
+ }
43
+ }
44
+
32
45
class Wrapper extends Component {
33
46
render ( ) {
34
47
return < div > website wrapper { this . props . children } </ div >
@@ -67,13 +80,16 @@ describe('An <IndexLink>', function () {
67
80
68
81
const routes = (
69
82
< Route component = { App } >
70
- < Route path = "/website" component = { Wrapper } >
71
- < Route path = "products" component = { ProductsPage } >
72
- < Route path = ":productId" component = { ProductPage } />
73
- < IndexRoute component = { ProductsIndexPage } />
83
+ < Route path = "/" component = { RootWrapper } >
84
+ < IndexRoute component = { RootPage } />
85
+ < Route path = "website" component = { Wrapper } >
86
+ < Route path = "products" component = { ProductsPage } >
87
+ < Route path = ":productId" component = { ProductPage } />
88
+ < IndexRoute component = { ProductsIndexPage } />
89
+ </ Route >
90
+ < Route path = "contact" component = { ContactPage } />
91
+ < IndexRoute component = { IndexPage } />
74
92
</ Route >
75
- < Route path = "contact" component = { ContactPage } />
76
- < IndexRoute component = { IndexPage } />
77
93
</ Route >
78
94
</ Route >
79
95
)
@@ -87,11 +103,28 @@ describe('An <IndexLink>', function () {
87
103
unmountComponentAtNode ( node )
88
104
} )
89
105
106
+ describe ( 'when linking to the root' , function ( ) {
107
+ it ( 'is active and other routes are not' , function ( done ) {
108
+ render ( (
109
+ < Router history = { createHistory ( '/' ) } routes = { routes } />
110
+ ) , node , function ( ) {
111
+ expect ( node . querySelector ( '#rootLink' ) . className ) . toEqual ( 'active' )
112
+ expect ( node . querySelector ( '#overviewLink' ) . className ) . toEqual ( '' )
113
+ expect ( node . querySelector ( '#contactLink' ) . className ) . toEqual ( '' )
114
+ expect ( node . querySelector ( '#productsLink' ) . className ) . toEqual ( '' )
115
+ expect ( node . querySelector ( '#productsIndexLink' ) . className ) . toEqual ( '' )
116
+ expect ( node . querySelector ( '#specificProductLink' ) . className ) . toEqual ( '' )
117
+ done ( )
118
+ } )
119
+ } )
120
+ } )
121
+
90
122
describe ( 'when linking to the overview' , function ( ) {
91
123
it ( 'is active and other routes are not' , function ( done ) {
92
124
render ( (
93
125
< Router history = { createHistory ( '/website' ) } routes = { routes } />
94
126
) , node , function ( ) {
127
+ expect ( node . querySelector ( '#rootLink' ) . className ) . toEqual ( '' )
95
128
expect ( node . querySelector ( '#overviewLink' ) . className ) . toEqual ( 'active' )
96
129
expect ( node . querySelector ( '#contactLink' ) . className ) . toEqual ( '' )
97
130
expect ( node . querySelector ( '#productsLink' ) . className ) . toEqual ( '' )
@@ -107,6 +140,7 @@ describe('An <IndexLink>', function () {
107
140
render ( (
108
141
< Router history = { createHistory ( '/website/contact' ) } routes = { routes } />
109
142
) , node , function ( ) {
143
+ expect ( node . querySelector ( '#rootLink' ) . className ) . toEqual ( '' )
110
144
expect ( node . querySelector ( '#overviewLink' ) . className ) . toEqual ( '' )
111
145
expect ( node . querySelector ( '#contactLink' ) . className ) . toEqual ( 'active' )
112
146
expect ( node . querySelector ( '#productsLink' ) . className ) . toEqual ( '' )
@@ -122,6 +156,7 @@ describe('An <IndexLink>', function () {
122
156
render ( (
123
157
< Router history = { createHistory ( '/website/products' ) } routes = { routes } />
124
158
) , node , function ( ) {
159
+ expect ( node . querySelector ( '#rootLink' ) . className ) . toEqual ( '' )
125
160
expect ( node . querySelector ( '#overviewLink' ) . className ) . toEqual ( '' )
126
161
expect ( node . querySelector ( '#contactLink' ) . className ) . toEqual ( '' )
127
162
expect ( node . querySelector ( '#productsLink' ) . className ) . toEqual ( 'active' )
@@ -137,6 +172,7 @@ describe('An <IndexLink>', function () {
137
172
render ( (
138
173
< Router history = { createHistory ( '/website/products/15' ) } routes = { routes } />
139
174
) , node , function ( ) {
175
+ expect ( node . querySelector ( '#rootLink' ) . className ) . toEqual ( '' )
140
176
expect ( node . querySelector ( '#overviewLink' ) . className ) . toEqual ( '' )
141
177
expect ( node . querySelector ( '#contactLink' ) . className ) . toEqual ( '' )
142
178
expect ( node . querySelector ( '#productsLink' ) . className ) . toEqual ( 'active' )
0 commit comments