@@ -42,31 +42,31 @@ describe('react-router-component (on server)', function() {
42
42
}
43
43
44
44
it ( 'renders to /' , function ( ) {
45
- var markup = ReactDOMServer . renderToString ( < App path = "/" /> ) ;
45
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/" /> ) ;
46
46
assert ( markup . match ( / c l a s s = " A p p " / ) ) ;
47
47
assert ( markup . match ( / m a i n p a g e / ) ) ;
48
48
} ) ;
49
49
50
50
it ( 'renders to /:slug' , function ( ) {
51
- var markup = ReactDOMServer . renderToString ( < App path = "/x/hello" /> ) ;
51
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/x/hello" /> ) ;
52
52
assert ( markup . match ( / c l a s s = " A p p " / ) ) ;
53
53
assert ( markup . match ( / h e l l o / ) ) ;
54
54
} ) ;
55
55
56
56
it ( 'renders with regex' , function ( ) {
57
- var markup = ReactDOMServer . renderToString ( < App path = "/y/ohhai" /> ) ;
57
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/y/ohhai" /> ) ;
58
58
assert ( markup . match ( / c l a s s = " A p p " / ) ) ;
59
59
assert ( markup . match ( / o h h a i / ) ) ;
60
60
} ) ;
61
61
62
62
it ( 'renders with regex and urlPatternOptions(matchKeys)' , function ( ) {
63
- var markup = ReactDOMServer . renderToString ( < App path = "/z/one/two" /> ) ;
63
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/z/one/two" /> ) ;
64
64
assert ( markup . match ( / c l a s s = " A p p " / ) ) ;
65
65
assert ( markup . match ( / o n e t w o / ) ) ;
66
66
} ) ;
67
67
68
68
it ( 'renders to empty on notfound' , function ( ) {
69
- var markup = ReactDOMServer . renderToString ( < App path = "/notfound" /> ) ;
69
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/notfound" /> ) ;
70
70
assert ( markup . match ( / c l a s s = " A p p " / ) ) ;
71
71
assert ( markup . match ( / n o t _ f o u n d / ) ) ;
72
72
} ) ;
@@ -82,8 +82,8 @@ describe('react-router-component (on server)', function() {
82
82
}
83
83
84
84
it ( 'renders to <body>' , function ( ) {
85
- var markup = ReactDOMServer . renderToString ( < App path = "/" /> ) ;
86
- assert ( markup . match ( / < b o d y [ ^ > ] + > < d i v [ ^ > ] + > m a i n p a g e < \ /d i v > < \ /b o d y > / ) ) ;
85
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/" /> ) ;
86
+ assert . equal ( markup , ' <body class="App"> <div> mainpage</div></body>' ) ;
87
87
} ) ;
88
88
} ) ;
89
89
@@ -114,21 +114,21 @@ describe('react-router-component (on server)', function() {
114
114
}
115
115
116
116
it ( 'renders Link component with href scoped to its prefix' , function ( ) {
117
- var markup = ReactDOMServer . renderToString ( < App path = "/x/nice/hello" /> ) ;
117
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/x/nice/hello" /> ) ;
118
118
assert ( markup . match ( / c l a s s = " A p p " / ) ) ;
119
119
assert ( markup . match ( / c l a s s = " X " / ) ) ;
120
120
assert ( markup . match ( / h r e f = " \/ x \/ n i c e \/ h i " / ) ) ;
121
121
} ) ;
122
122
123
123
it ( 'renders global Link component with correct href (not scoped to a router)' , function ( ) {
124
- var markup = ReactDOMServer . renderToString ( < App path = "/x/nice/hello2" /> ) ;
124
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/x/nice/hello2" /> ) ;
125
125
assert ( markup . match ( / c l a s s = " A p p " / ) ) ;
126
126
assert ( markup . match ( / c l a s s = " X " / ) ) ;
127
127
assert ( markup . match ( / h r e f = " \/ h i " / ) ) ;
128
128
} ) ;
129
129
130
130
it ( 'renders Link component with href scoped to its nested context prefix' , function ( ) {
131
- var markup = ReactDOMServer . renderToString ( < App path = "/x/nice/hello3/welcome" /> ) ;
131
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/x/nice/hello3/welcome" /> ) ;
132
132
assert ( markup . match ( / c l a s s = " A p p " / ) ) ;
133
133
assert ( markup . match ( / c l a s s = " X " / ) ) ;
134
134
assert ( markup . match ( / c l a s s = " Y " / ) ) ;
@@ -171,23 +171,23 @@ describe('react-router-component (on server)', function() {
171
171
}
172
172
173
173
it ( 'renders Link component with href scoped to its prefix' , function ( ) {
174
- var markup = ReactDOMServer . renderToString ( < App path = "/l1/nice" /> ) ;
174
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/l1/nice" /> ) ;
175
175
assert ( markup . match ( / c l a s s = " A p p " / ) ) ;
176
176
assert ( markup . match ( / c l a s s = " L 1 " / ) ) ;
177
177
assert ( markup . match ( / h r e f = " \/ l 1 \/ n i c e \/ l 2 " / ) ) ;
178
178
assert ( markup . match ( / d a t a - s l u g = " n i c e " / ) ) ;
179
179
} ) ;
180
180
181
181
it ( 'renders Link component with href scoped to its prefix - trailing slash' , function ( ) {
182
- var markup = ReactDOMServer . renderToString ( < App path = "/l1/nice/" /> ) ;
182
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/l1/nice/" /> ) ;
183
183
assert ( markup . match ( / c l a s s = " A p p " / ) ) ;
184
184
assert ( markup . match ( / c l a s s = " L 1 " / ) ) ;
185
185
assert ( markup . match ( / h r e f = " \/ l 1 \/ n i c e \/ l 2 " / ) ) ;
186
186
assert ( markup . match ( / d a t a - s l u g = " n i c e " / ) ) ;
187
187
} ) ;
188
188
189
189
it ( 'renders nested Link component with href scoped to its prefix' , function ( ) {
190
- var markup = ReactDOMServer . renderToString ( < App path = "/l1/nice/l2" /> ) ;
190
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/l1/nice/l2" /> ) ;
191
191
assert ( markup . match ( / c l a s s = " A p p " / ) ) ;
192
192
assert ( markup . match ( / c l a s s = " L 1 " / ) ) ;
193
193
assert ( markup . match ( / c l a s s = " L 2 " / ) ) ;
@@ -196,7 +196,7 @@ describe('react-router-component (on server)', function() {
196
196
} ) ;
197
197
198
198
it ( 'renders global Link component with correct href (not scoped to a router)' , function ( ) {
199
- var markup = ReactDOMServer . renderToString ( < App path = "/l1/nice/l2/foo" /> ) ;
199
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/l1/nice/l2/foo" /> ) ;
200
200
assert ( markup . match ( / c l a s s = " A p p " / ) ) ;
201
201
assert ( markup . match ( / c l a s s = " L 2 " / ) ) ;
202
202
assert ( markup . match ( / h r e f = " \/ h i " / ) ) ;
@@ -253,7 +253,7 @@ describe('react-router-component (on server)', function() {
253
253
} ;
254
254
255
255
it ( 'renders to / with context intact' , function ( ) {
256
- var markup = ReactDOMServer . renderToString ( < App path = "/" /> ) ;
256
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/" /> ) ;
257
257
assert ( markup . match ( / c l a s s = " A p p " / ) ) ;
258
258
assert ( markup . match ( / f l u x _ v a l u e / ) ) ;
259
259
} ) ;
@@ -302,26 +302,73 @@ describe('react-router-component (on server)', function() {
302
302
}
303
303
304
304
it ( 'passes urlPatternOptions from parent <Locations>' , function ( ) {
305
- var markup = ReactDOMServer . renderToString ( < App path = "/start/1/biff/baz" /> ) ;
305
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/start/1/biff/baz" /> ) ;
306
306
assert ( markup . match ( / b i f f \| b a z / ) ) ;
307
307
} ) ;
308
308
309
309
it ( 'merges urlPatternOptions from parent <Locations> and a <Location>' , function ( ) {
310
- var markup = ReactDOMServer . renderToString ( < App path = "/start/2/BIFF/BA" /> ) ;
310
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/start/2/BIFF/BA" /> ) ;
311
311
assert ( markup . match ( / B I F F \| B A / ) ) ;
312
- markup = ReactDOMServer . renderToString ( < App path = "/start/2/biff/ba" /> ) ;
312
+ markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/start/2/biff/ba" /> ) ;
313
313
assert ( markup . match ( / n o t f o u n d / ) ) ;
314
314
} ) ;
315
315
316
316
it ( 'gives urlPatternOptions on route precedence over router' , function ( ) {
317
- var markup = ReactDOMServer . renderToString ( < App path = "/start/3/biff/boff" /> ) ;
317
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/start/3/biff/boff" /> ) ;
318
318
assert ( markup . match ( / b i f f \| b o f f / ) ) ;
319
319
} ) ;
320
320
321
321
it ( 'inherits from parent contextual router' , function ( ) {
322
- var markup = ReactDOMServer . renderToString ( < App path = "/start/4/foobar" /> ) ;
322
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/start/4/foobar" /> ) ;
323
323
assert ( markup . match ( / u n d e f i n e d \| u n d e f i n e d b a r / ) ) ;
324
324
} ) ;
325
325
} ) ;
326
326
327
+ describe ( 'props on router (childProps)' , function ( ) {
328
+ class App extends React . Component {
329
+ render ( ) {
330
+ return (
331
+ < Locations className = "X" childProps = { { className : "A" , 'data-from-first' : 'A' } } path = { this . props . path } >
332
+ < Location path = "/" handler = { < div > mainpage</ div > } />
333
+ < Location path = "/hasclassname" handler = { < div className = "ownClassname" /> } />
334
+ < Location path = "/nested/*" handler = {
335
+ < Locations className = "Y" data-own-prop = { true } contextual = { true } childProps = { { className : "B" , 'data-from-second' : 'B' } } >
336
+ < Location path = "/foo" handler = { < div > foo</ div > } />
337
+ { /* Rabbit hole it */ }
338
+ < Location path = "/nestedAgain/*" handler = {
339
+ < Locations className = "Z" data-own-prop = { true } contextual = { true } childProps = { { className : "C" , 'data-from-third' : 'C' } } >
340
+ < Location path = "/bar" handler = { < div > bar</ div > } />
341
+ </ Locations > }
342
+ />
343
+ </ Locations > } />
344
+ </ Locations >
345
+ ) ;
346
+ }
347
+ }
348
+
349
+ it ( 'passes className' , function ( ) {
350
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/" /> ) ;
351
+ assert ( markup . match ( / < d i v c l a s s = " A " [ ^ > ] * > m a i n p a g e / ) ) ;
352
+ } ) ;
353
+
354
+ it ( 'does not override child classname' , function ( ) {
355
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/hasclassname" /> ) ;
356
+ assert ( markup . match ( / < d i v c l a s s = " o w n C l a s s n a m e " / ) ) ;
357
+ } ) ;
358
+
359
+ it ( 'passes childProps to contextual children, but inner childProps have priority' , function ( ) {
360
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/nested/foo" /> ) ;
361
+ assert . equal ( markup , '<div class="X"><div class="Y" data-own-prop="true" data-from-first="A">' +
362
+ '<div class="B" data-from-first="A" data-from-second="B">foo</div></div></div>' ) ;
363
+ } ) ;
364
+
365
+ it ( 'keeps going and going' , function ( ) {
366
+ var markup = ReactDOMServer . renderToStaticMarkup ( < App path = "/nested/nestedAgain/bar" /> ) ;
367
+ assert . equal ( markup , '<div class="X"><div class="Y" data-own-prop="true" data-from-first="A">' +
368
+ '<div class="Z" data-own-prop="true" data-from-first="A" data-from-second="B">' +
369
+ '<div class="C" data-from-first="A" data-from-second="B" data-from-third="C">bar' +
370
+ '</div></div></div></div>' ) ;
371
+ } ) ;
372
+ } ) ;
373
+
327
374
} ) ;
0 commit comments