11
2+ var after = require ( 'after' ) ;
23var should = require ( 'should' ) ;
34var express = require ( '../' )
45 , Route = express . Route
@@ -9,167 +10,182 @@ describe('Route', function(){
910
1011 describe ( '.all' , function ( ) {
1112 it ( 'should add handler' , function ( done ) {
13+ var req = { method : 'GET' , url : '/' } ;
1214 var route = new Route ( '/foo' ) ;
1315
1416 route . all ( function ( req , res , next ) {
15- assert . equal ( req . a , 1 ) ;
16- assert . equal ( res . b , 2 ) ;
17+ req . called = true ;
1718 next ( ) ;
1819 } ) ;
1920
20- route . dispatch ( { a :1 , method : 'GET' } , { b :2 } , done ) ;
21+ route . dispatch ( req , { } , function ( err ) {
22+ if ( err ) return done ( err ) ;
23+ should ( req . called ) . be . ok ;
24+ done ( ) ;
25+ } ) ;
2126 } )
2227
2328 it ( 'should handle VERBS' , function ( done ) {
29+ var count = 0 ;
2430 var route = new Route ( '/foo' ) ;
31+ var cb = after ( methods . length , function ( err ) {
32+ if ( err ) return done ( err ) ;
33+ count . should . equal ( methods . length ) ;
34+ done ( ) ;
35+ } ) ;
2536
26- var count = 0 ;
2737 route . all ( function ( req , res , next ) {
2838 count ++ ;
39+ next ( ) ;
2940 } ) ;
3041
3142 methods . forEach ( function testMethod ( method ) {
32- route . dispatch ( { method : method } , { } ) ;
43+ var req = { method : method , url : '/' } ;
44+ route . dispatch ( req , { } , cb ) ;
3345 } ) ;
34-
35- assert . equal ( count , methods . length ) ;
36- done ( ) ;
3746 } )
3847
3948 it ( 'should stack' , function ( done ) {
49+ var req = { count : 0 , method : 'GET' , url : '/' } ;
4050 var route = new Route ( '/foo' ) ;
4151
42- var count = 0 ;
4352 route . all ( function ( req , res , next ) {
44- count ++ ;
53+ req . count ++ ;
4554 next ( ) ;
4655 } ) ;
4756
4857 route . all ( function ( req , res , next ) {
49- count ++ ;
58+ req . count ++ ;
5059 next ( ) ;
5160 } ) ;
5261
53- route . dispatch ( { method : 'GET' } , { } , function ( err ) {
54- assert . ifError ( err ) ;
55- count ++ ;
62+ route . dispatch ( req , { } , function ( err ) {
63+ if ( err ) return done ( err ) ;
64+ req . count . should . equal ( 2 ) ;
65+ done ( ) ;
5666 } ) ;
57-
58- assert . equal ( count , 3 ) ;
59- done ( ) ;
6067 } )
6168 } )
6269
6370 describe ( '.VERB' , function ( ) {
6471 it ( 'should support .get' , function ( done ) {
72+ var req = { method : 'GET' , url : '/' } ;
6573 var route = new Route ( '' ) ;
6674
67- var count = 0 ;
6875 route . get ( function ( req , res , next ) {
69- count ++ ;
76+ req . called = true ;
77+ next ( ) ;
7078 } )
7179
72- route . dispatch ( { method : 'GET' } , { } ) ;
73- assert ( count ) ;
74- done ( ) ;
80+ route . dispatch ( req , { } , function ( err ) {
81+ if ( err ) return done ( err ) ;
82+ should ( req . called ) . be . ok ;
83+ done ( ) ;
84+ } ) ;
7585 } )
7686
7787 it ( 'should limit to just .VERB' , function ( done ) {
88+ var req = { method : 'POST' , url : '/' } ;
7889 var route = new Route ( '' ) ;
7990
8091 route . get ( function ( req , res , next ) {
81- assert ( false ) ;
82- done ( ) ;
92+ throw new Error ( 'not me!' ) ;
8393 } )
8494
8595 route . post ( function ( req , res , next ) {
86- assert ( true ) ;
96+ req . called = true ;
97+ next ( ) ;
8798 } )
8899
89- route . dispatch ( { method : 'post' } , { } ) ;
90- done ( ) ;
100+ route . dispatch ( req , { } , function ( err ) {
101+ if ( err ) return done ( err ) ;
102+ should ( req . called ) . be . true ;
103+ done ( ) ;
104+ } ) ;
91105 } )
92106
93107 it ( 'should allow fallthrough' , function ( done ) {
108+ var req = { order : '' , method : 'GET' , url : '/' } ;
94109 var route = new Route ( '' ) ;
95110
96- var order = '' ;
97111 route . get ( function ( req , res , next ) {
98- order += 'a' ;
112+ req . order += 'a' ;
99113 next ( ) ;
100114 } )
101115
102116 route . all ( function ( req , res , next ) {
103- order += 'b' ;
117+ req . order += 'b' ;
104118 next ( ) ;
105119 } ) ;
106120
107121 route . get ( function ( req , res , next ) {
108- order += 'c' ;
122+ req . order += 'c' ;
123+ next ( ) ;
109124 } )
110125
111- route . dispatch ( { method : 'get' } , { } ) ;
112- assert . equal ( order , 'abc' ) ;
113- done ( ) ;
126+ route . dispatch ( req , { } , function ( err ) {
127+ if ( err ) return done ( err ) ;
128+ req . order . should . equal ( 'abc' ) ;
129+ done ( ) ;
130+ } ) ;
114131 } )
115132 } )
116133
117134 describe ( 'errors' , function ( ) {
118135 it ( 'should handle errors via arity 4 functions' , function ( done ) {
136+ var req = { order : '' , method : 'GET' , url : '/' } ;
119137 var route = new Route ( '' ) ;
120138
121- var order = '' ;
122139 route . all ( function ( req , res , next ) {
123140 next ( new Error ( 'foobar' ) ) ;
124141 } ) ;
125142
126143 route . all ( function ( req , res , next ) {
127- order += '0' ;
144+ req . order += '0' ;
128145 next ( ) ;
129146 } ) ;
130147
131148 route . all ( function ( err , req , res , next ) {
132- order += 'a' ;
149+ req . order += 'a' ;
133150 next ( err ) ;
134151 } ) ;
135152
136- route . all ( function ( err , req , res , next ) {
137- assert . equal ( err . message , 'foobar' ) ;
138- assert . equal ( order , 'a' ) ;
153+ route . dispatch ( req , { } , function ( err ) {
154+ should ( err ) . be . ok ;
155+ should ( err . message ) . equal ( 'foobar' ) ;
156+ req . order . should . equal ( 'a' ) ;
139157 done ( ) ;
140158 } ) ;
141-
142- route . dispatch ( { method : 'get' } , { } ) ;
143159 } )
144160
145161 it ( 'should handle throw' , function ( done ) {
162+ var req = { order : '' , method : 'GET' , url : '/' } ;
146163 var route = new Route ( '' ) ;
147164
148- var order = '' ;
149165 route . all ( function ( req , res , next ) {
150166 throw new Error ( 'foobar' ) ;
151167 } ) ;
152168
153169 route . all ( function ( req , res , next ) {
154- order += '0' ;
170+ req . order += '0' ;
155171 next ( ) ;
156172 } ) ;
157173
158174 route . all ( function ( err , req , res , next ) {
159- order += 'a' ;
175+ req . order += 'a' ;
160176 next ( err ) ;
161177 } ) ;
162178
163- route . all ( function ( err , req , res , next ) {
164- assert . equal ( err . message , 'foobar' ) ;
165- assert . equal ( order , 'a' ) ;
179+ route . dispatch ( req , { } , function ( err ) {
180+ should ( err ) . be . ok ;
181+ should ( err . message ) . equal ( 'foobar' ) ;
182+ req . order . should . equal ( 'a' ) ;
166183 done ( ) ;
167184 } ) ;
168-
169- route . dispatch ( { method : 'get' } , { } ) ;
170185 } ) ;
171186
172187 it ( 'should handle throwing inside error handlers' , function ( done ) {
188+ var req = { method : 'GET' , url : '/' } ;
173189 var route = new Route ( '' ) ;
174190
175191 route . get ( function ( req , res , next ) {
@@ -181,36 +197,42 @@ describe('Route', function(){
181197 } ) ;
182198
183199 route . get ( function ( err , req , res , next ) {
184- assert . equal ( err . message , 'oops' ) ;
185- done ( ) ;
200+ req . message = err . message ;
201+ next ( ) ;
186202 } ) ;
187203
188- route . dispatch ( { url : '/' , method : 'GET' } , { } ) ;
204+ route . dispatch ( req , { } , function ( err ) {
205+ if ( err ) return done ( err ) ;
206+ should ( req . message ) . equal ( 'oops' ) ;
207+ done ( ) ;
208+ } ) ;
189209 } ) ;
190210
191211 it ( 'should handle throw in .all' , function ( done ) {
212+ var req = { method : 'GET' , url : '/' } ;
192213 var route = new Route ( '' ) ;
193214
194215 route . all ( function ( req , res , next ) {
195216 throw new Error ( 'boom!' ) ;
196217 } ) ;
197218
198- route . dispatch ( { url : '/' , method : 'GET' } , { } , function ( err ) {
219+ route . dispatch ( req , { } , function ( err ) {
199220 should ( err ) . be . ok ;
200221 err . message . should . equal ( 'boom!' ) ;
201222 done ( ) ;
202223 } ) ;
203224 } ) ;
204225
205226 it ( 'should handle single error handler' , function ( done ) {
227+ var req = { method : 'GET' , url : '/' } ;
206228 var route = new Route ( '' ) ;
207229
208230 route . all ( function ( err , req , res , next ) {
209231 // this should not execute
210232 true . should . be . false ;
211233 } ) ;
212234
213- route . dispatch ( { url : '/' , method : 'GET' } , { } , done ) ;
235+ route . dispatch ( req , { } , done ) ;
214236 } ) ;
215237 } )
216238} )
0 commit comments