33describe Webmachine ::Dispatcher do
44 let ( :dispatcher ) { Webmachine . application . dispatcher }
55 let ( :request ) { Webmachine ::Request . new ( "GET" , URI . parse ( "http://localhost:8080/" ) , Webmachine ::Headers [ "accept" => "*/*" ] , "" ) }
6+ let ( :request2 ) { Webmachine ::Request . new ( "GET" , URI . parse ( "http://localhost:8080/hello/bob.html" ) , Webmachine ::Headers [ "accept" => "*/*" ] , "" ) }
67 let ( :response ) { Webmachine ::Response . new }
78 let ( :resource ) do
89 Class . new ( Webmachine ::Resource ) do
@@ -14,6 +15,14 @@ def to_html; "hello world!"; end
1415 def to_html ; "goodbye, cruel world" ; end
1516 end
1617 end
18+ let ( :resource3 ) do
19+ Class . new ( Webmachine ::Resource ) do
20+ def to_html
21+ name , format = request . path_info [ :captures ]
22+ "Hello #{ name } with #{ format } "
23+ end
24+ end
25+ end
1726 let ( :fsm ) { double }
1827
1928 before { dispatcher . reset }
@@ -44,6 +53,12 @@ def to_html; "goodbye, cruel world"; end
4453 expect ( fsm ) . to receive ( :run )
4554 dispatcher . dispatch ( request , response )
4655 end
56+ it "should handle regex path segments in route definition" do
57+ dispatcher . add_route [ "hello" , /(.*)\. (.*)/ ] , resource3
58+ expect ( Webmachine ::Decision ::FSM ) . to receive ( :new ) . with ( instance_of ( resource3 ) , request2 , response ) . and_return ( fsm )
59+ expect ( fsm ) . to receive ( :run )
60+ dispatcher . dispatch ( request2 , response )
61+ end
4762
4863 it "should apply route to request before creating the resource" do
4964 route = dispatcher . add_route [ :* ] , resource
0 commit comments