@@ -12,8 +12,18 @@ var historyAPI = (
12
12
13
13
var host , app , router ;
14
14
15
+ var timeout = 250 ;
16
+
15
17
var div = React . DOM . div ;
16
18
19
+ function delay ( ms , func ) {
20
+ if ( func === undefined ) {
21
+ func = ms ;
22
+ ms = timeout ;
23
+ }
24
+ setTimeout ( func , ms ) ;
25
+ }
26
+
17
27
function getRenderedContent ( ) {
18
28
var content = app . refs . content || app . refs . router ;
19
29
var node = content . getDOMNode ( ) ;
@@ -40,7 +50,7 @@ function cleanUp(done) {
40
50
window . history . pushState ( { } , '' , '/__zuul' ) ;
41
51
}
42
52
window . location . hash = '' ;
43
- setTimeout ( done , 200 ) ;
53
+ delay ( done ) ;
44
54
}
45
55
46
56
function setUp ( App ) {
@@ -72,6 +82,10 @@ describe('Routing', function() {
72
82
} , 'mainpage' )
73
83
}
74
84
} ) ,
85
+ Router . Location ( {
86
+ path : '/__zuul/transient' ,
87
+ handler : function ( props ) { return div ( null , "i'm transient" ) }
88
+ } ) ,
75
89
Router . Location ( {
76
90
path : '/__zuul/:slug' ,
77
91
handler : function ( props ) { return div ( null , props . slug ) }
@@ -110,10 +124,25 @@ describe('Routing', function() {
110
124
router . navigate ( '/__zuul/hello' , function ( ) {
111
125
assertRendered ( 'hello' ) ;
112
126
history . back ( ) ;
113
- setTimeout ( function ( ) {
127
+ delay ( function ( ) {
114
128
assertRendered ( 'mainpage' ) ;
115
129
done ( ) ;
116
- } , 200 ) ;
130
+ } ) ;
131
+ } ) ;
132
+ } ) ;
133
+
134
+ it ( 'navigates to a different route (replacing current history record)' , function ( done ) {
135
+ assertRendered ( 'mainpage' ) ;
136
+ router . navigate ( '/__zuul/hello' , function ( ) {
137
+ assertRendered ( 'hello' ) ;
138
+ router . navigate ( '/__zuul/transient' , { replace : true } , function ( ) {
139
+ assertRendered ( "i'm transient" ) ;
140
+ history . back ( ) ;
141
+ delay ( function ( ) {
142
+ assertRendered ( 'mainpage' ) ;
143
+ done ( ) ;
144
+ } ) ;
145
+ } ) ;
117
146
} ) ;
118
147
} ) ;
119
148
@@ -138,19 +167,19 @@ describe('Routing', function() {
138
167
it ( 'navigates via onClick event' , function ( done ) {
139
168
assertRendered ( 'mainpage' ) ;
140
169
clickOn ( router . refs . link ) ;
141
- setTimeout ( function ( ) {
170
+ delay ( function ( ) {
142
171
assertRendered ( 'hello' ) ;
143
172
done ( ) ;
144
- } , 200 ) ;
173
+ } ) ;
145
174
} ) ;
146
175
147
176
it ( 'navigates even if it is situated outside of the router context' , function ( done ) {
148
177
assertRendered ( 'mainpage' ) ;
149
178
clickOn ( app . refs . outside ) ;
150
- setTimeout ( function ( ) {
179
+ delay ( function ( ) {
151
180
assertRendered ( 'hi' ) ;
152
181
done ( ) ;
153
- } , 200 ) ;
182
+ } ) ;
154
183
} ) ;
155
184
156
185
} ) ;
@@ -189,9 +218,9 @@ describe('Routing with async components', function() {
189
218
mixins : [ ReactAsync . Mixin ] ,
190
219
191
220
getInitialStateAsync : function ( cb ) {
192
- setTimeout ( function ( ) {
221
+ delay ( function ( ) {
193
222
cb ( null , { message : 'about' } ) ;
194
- } , 200 ) ;
223
+ } ) ;
195
224
} ,
196
225
197
226
render : function ( ) {
@@ -401,10 +430,10 @@ describe('Contextual routers', function() {
401
430
router . navigate ( '/__zuul/subcat/page' , function ( ) {
402
431
assertRendered ( 'subcat/page' ) ;
403
432
clickOn ( router . refs . subcat . refs . router . refs . link ) ;
404
- setTimeout ( function ( ) {
433
+ delay ( function ( ) {
405
434
assertRendered ( 'subcat/root' ) ;
406
435
done ( ) ;
407
- } , 200 ) ;
436
+ } ) ;
408
437
} ) ;
409
438
} ) ;
410
439
@@ -413,10 +442,10 @@ describe('Contextual routers', function() {
413
442
router . navigate ( '/__zuul/subcat/escape' , function ( ) {
414
443
assertRendered ( 'subcat/escape' ) ;
415
444
clickOn ( router . refs . subcat . refs . router . refs . link ) ;
416
- setTimeout ( function ( ) {
445
+ delay ( function ( ) {
417
446
assertRendered ( 'mainpage' ) ;
418
447
done ( ) ;
419
- } , 200 ) ;
448
+ } ) ;
420
449
} ) ;
421
450
} ) ;
422
451
} ) ;
@@ -489,10 +518,10 @@ describe('Multiple active routers', function() {
489
518
app . refs . router1 . navigate ( '/__zuul/hello' , function ( ) {
490
519
assertRendered ( 'hello1hello2' ) ;
491
520
window . history . back ( ) ;
492
- setTimeout ( function ( ) {
521
+ delay ( function ( ) {
493
522
assertRendered ( 'mainpage1mainpage2' ) ;
494
523
done ( ) ;
495
- } , 200 ) ;
524
+ } ) ;
496
525
} ) ;
497
526
} ) ;
498
527
@@ -510,6 +539,12 @@ describe('Hash routing', function() {
510
539
return Router . Link ( { ref : 'link' , href : '/hello' } , 'mainpage' ) ;
511
540
}
512
541
} ) ,
542
+ Router . Location ( {
543
+ path : '/transient' ,
544
+ handler : function ( props ) {
545
+ return div ( null , "i'm transient" ) ;
546
+ }
547
+ } ) ,
513
548
Router . Location ( {
514
549
path : '/:slug' ,
515
550
handler : function ( props ) {
@@ -530,6 +565,23 @@ describe('Hash routing', function() {
530
565
assert . ok ( dom . classList . contains ( 'App' ) ) ;
531
566
} ) ;
532
567
568
+ it ( 'navigates to a different route (replacing current history record)' , function ( done ) {
569
+ assertRendered ( 'mainpage' ) ;
570
+ router . navigate ( '/hello' , function ( ) {
571
+ assertRendered ( 'hello' ) ;
572
+ delay ( function ( ) {
573
+ router . navigate ( '/transient' , { replace : true } , function ( ) {
574
+ assertRendered ( "i'm transient" ) ;
575
+ history . back ( ) ;
576
+ delay ( function ( ) {
577
+ assertRendered ( 'mainpage' ) ;
578
+ done ( ) ;
579
+ } ) ;
580
+ } ) ;
581
+ } ) ;
582
+ } ) ;
583
+ } ) ;
584
+
533
585
it ( 'navigates to a different route' , function ( done ) {
534
586
assertRendered ( 'mainpage' ) ;
535
587
router . navigate ( '/hello' , function ( ) {
@@ -543,10 +595,10 @@ describe('Hash routing', function() {
543
595
router . navigate ( '/hello' , function ( ) {
544
596
assertRendered ( 'hello' ) ;
545
597
window . location . hash = '/' ;
546
- setTimeout ( function ( ) {
598
+ delay ( function ( ) {
547
599
assertRendered ( 'mainpage' ) ;
548
600
done ( ) ;
549
- } , 200 ) ;
601
+ } ) ;
550
602
} ) ;
551
603
} ) ;
552
604
@@ -563,10 +615,10 @@ describe('Hash routing', function() {
563
615
it ( 'navigates via onClick event' , function ( done ) {
564
616
assertRendered ( 'mainpage' ) ;
565
617
clickOn ( router . refs . link ) ;
566
- setTimeout ( function ( ) {
618
+ delay ( function ( ) {
567
619
assertRendered ( 'hello' ) ;
568
620
done ( ) ;
569
- } , 200 ) ;
621
+ } ) ;
570
622
} ) ;
571
623
} ) ;
572
624
@@ -622,10 +674,10 @@ describe('Contextual Hash routers', function() {
622
674
router . navigate ( '/subcat/escape' , function ( ) {
623
675
assertRendered ( 'subcat/escape' ) ;
624
676
clickOn ( router . refs . subcat . refs . router . refs . link ) ;
625
- setTimeout ( function ( ) {
677
+ delay ( function ( ) {
626
678
assertRendered ( 'mainpage' ) ;
627
679
done ( ) ;
628
- } , 200 ) ;
680
+ } ) ;
629
681
} ) ;
630
682
} ) ;
631
683
0 commit comments