@@ -15,16 +15,6 @@ pub struct RouteBuilder {
1515 routers : HashMap < Method , Router < Box < Handler + Send + Share > > >
1616}
1717
18- macro_rules! method_map(
19- ( $method: ident => $variant: ty) => (
20- pub fn $method<' a, H : Handler >( & ' a mut self , pattern: & str , handler: H )
21- -> & ' a mut RouteBuilder
22- {
23- self . map( conduit:: $variant, pattern, handler)
24- }
25- )
26- )
27-
2818impl RouteBuilder {
2919 pub fn new ( ) -> RouteBuilder {
3020 RouteBuilder { routers : HashMap :: new ( ) }
@@ -54,26 +44,22 @@ impl RouteBuilder {
5444 }
5545
5646 pub fn post < ' a , H : Handler > ( & ' a mut self , pattern : & str , handler : H )
57- -> & ' a mut RouteBuilder
58- {
47+ -> & ' a mut RouteBuilder {
5948 self . map ( conduit:: Post , pattern, handler)
6049 }
6150
6251 pub fn put < ' a , H : Handler > ( & ' a mut self , pattern : & str , handler : H )
63- -> & ' a mut RouteBuilder
64- {
52+ -> & ' a mut RouteBuilder {
6553 self . map ( conduit:: Put , pattern, handler)
6654 }
6755
6856 pub fn delete < ' a , H : Handler > ( & ' a mut self , pattern : & str , handler : H )
69- -> & ' a mut RouteBuilder
70- {
57+ -> & ' a mut RouteBuilder {
7158 self . map ( conduit:: Delete , pattern, handler)
7259 }
7360
7461 pub fn head < ' a , H : Handler > ( & ' a mut self , pattern : & str , handler : H )
75- -> & ' a mut RouteBuilder
76- {
62+ -> & ' a mut RouteBuilder {
7763 self . map ( conduit:: Head , pattern, handler)
7864 }
7965}
@@ -115,8 +101,6 @@ impl<'a> RequestParams<'a> for &'a mut Request {
115101 }
116102}
117103
118- //impl<T: Request> RequestParams for T {}
119-
120104#[ cfg( test) ]
121105mod tests {
122106 extern crate semver;
@@ -168,28 +152,40 @@ mod tests {
168152 }
169153
170154 #[ test]
171- fn as_conduit_handler ( ) {
172- let mut router = RouteBuilder :: new ( ) ;
173- router. post ( "/posts/:id" , handler1) ;
174- router. get ( "/posts/:id" , handler1) ;
175-
155+ fn basic_get ( ) {
156+ let router = test_router ( ) ;
176157 let mut req = RequestSentinel :: new ( conduit:: Get , "/posts/1" ) ;
177158 let mut res = router. call ( & mut req) . ok ( ) . expect ( "No response" ) ;
178159
179160 assert_eq ! ( res. status, ( 200 , "OK" ) ) ;
180161 assert_eq ! ( res. body. read_to_str( ) . unwrap( ) , "1, Get" . to_str( ) ) ;
162+ }
181163
164+ #[ test]
165+ fn basic_post ( ) {
166+ let router = test_router ( ) ;
182167 let mut req = RequestSentinel :: new ( conduit:: Post , "/posts/10" ) ;
183168 let mut res = router. call ( & mut req) . ok ( ) . expect ( "No response" ) ;
184169
185170 assert_eq ! ( res. status, ( 200 , "OK" ) ) ;
186171 assert_eq ! ( res. body. read_to_str( ) . unwrap( ) , "10, Post" . to_str( ) ) ;
172+ }
187173
174+ #[ test]
175+ fn nonexistent_route ( ) {
176+ let router = test_router ( ) ;
188177 let mut req = RequestSentinel :: new ( conduit:: Post , "/nonexistent" ) ;
189178 router. call ( & mut req) . err ( ) . expect ( "No response" ) ;
190179 }
191180
192- fn handler1 ( req : & mut conduit:: Request ) -> Result < conduit:: Response , ( ) > {
181+ fn test_router ( ) -> RouteBuilder {
182+ let mut router = RouteBuilder :: new ( ) ;
183+ router. post ( "/posts/:id" , test_handler) ;
184+ router. get ( "/posts/:id" , test_handler) ;
185+ router
186+ }
187+
188+ fn test_handler ( req : & mut conduit:: Request ) -> Result < conduit:: Response , ( ) > {
193189 let mut res = vec ! ( ) ;
194190 res. push ( req. params ( ) [ "id" ] ) ;
195191 res. push ( format ! ( "{}" , req. method( ) ) ) ;
0 commit comments