| | 111 | end |
|---|
| | 112 | |
|---|
| | 113 | def test_route_with_regexp_and_dot |
|---|
| | 114 | rs.draw do |map| |
|---|
| | 115 | map.connect ':controller/:action/:file', |
|---|
| | 116 | :controller => /admin|user/, |
|---|
| | 117 | :action => /upload|download/, |
|---|
| | 118 | :defaults => {:file => nil}, |
|---|
| | 119 | :requirements => {:file => %r{[^/]+(\.[^/]+)?}} |
|---|
| | 120 | end |
|---|
| | 121 | # Without a file extension |
|---|
| | 122 | assert_equal '/user/download/file', |
|---|
| | 123 | rs.generate(:controller => "user", :action => "download", :file => "file") |
|---|
| | 124 | assert_equal( |
|---|
| | 125 | {:controller => "user", :action => "download", :file => "file"}, |
|---|
| | 126 | rs.recognize_path("/user/download/file")) |
|---|
| | 127 | |
|---|
| | 128 | # Now, let's try a file with an extension, really a dot (.) |
|---|
| | 129 | assert_equal '/user/download/file.jpg', |
|---|
| | 130 | rs.generate( |
|---|
| | 131 | :controller => "user", :action => "download", :file => "file.jpg") |
|---|
| | 132 | assert_equal( |
|---|
| | 133 | {:controller => "user", :action => "download", :file => "file.jpg"}, |
|---|
| | 134 | rs.recognize_path("/user/download/file.jpg")) |
|---|
| | 1036 | |
|---|
| | 1037 | def test_assign_route_options_with_anchor_chars |
|---|
| | 1038 | segments = builder.segments_for_route_path '/cars/:action/:person/:car/' |
|---|
| | 1039 | defaults = {:action => 'buy', :person => nil, :car => nil} |
|---|
| | 1040 | requirements = {:person => /\w+/, :car => /^\w+$/} |
|---|
| | 1041 | |
|---|
| | 1042 | assert_raises ArgumentError do |
|---|
| | 1043 | route_requirements = builder.assign_route_options(segments, defaults, requirements) |
|---|
| | 1044 | end |
|---|
| | 1045 | |
|---|
| | 1046 | requirements[:car] = /[^\/]+/ |
|---|
| | 1047 | route_requirements = builder.assign_route_options(segments, defaults, requirements) |
|---|
| | 1048 | end |
|---|
| | 1049 | |
|---|