diff options
author | Andrew White <andyw@pixeltrix.co.uk> | 2014-01-05 11:57:50 +0000 |
---|---|---|
committer | Andrew White <andyw@pixeltrix.co.uk> | 2014-01-05 11:57:50 +0000 |
commit | 6b548830828e4e910de7854d21717c17303e089c (patch) | |
tree | d600f9547a3ac8aa7c646ccaeef6d553319ad5e4 /actionpack/test | |
parent | 892c539591c001285792b7865fe5d70846b0041b (diff) | |
download | rails-6b548830828e4e910de7854d21717c17303e089c.tar.gz rails-6b548830828e4e910de7854d21717c17303e089c.tar.bz2 rails-6b548830828e4e910de7854d21717c17303e089c.zip |
Unique the segment keys array for non-optimized url helpers
In Rails 3.2 you only needed pass an argument for dynamic segment once so
unique the segment keys array to match the number of args. Since the number
of args is less than required parts the non-optimized code path is selected.
This means to benefit from optimized url generation the arg needs to be
specified as many times as it appears in the path.
Fixes #12808
Diffstat (limited to 'actionpack/test')
-rw-r--r-- | actionpack/test/dispatch/routing_test.rb | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/actionpack/test/dispatch/routing_test.rb b/actionpack/test/dispatch/routing_test.rb index d41b94511a..840c157642 100644 --- a/actionpack/test/dispatch/routing_test.rb +++ b/actionpack/test/dispatch/routing_test.rb @@ -2864,6 +2864,24 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest assert !@request.params[:action].frozen? end + def test_multiple_positional_args_with_the_same_name + draw do + get '/downloads/:id/:id.tar' => 'downloads#show', as: :download, format: false + end + + expected_params = { + controller: 'downloads', + action: 'show', + id: '1' + } + + get '/downloads/1/1.tar' + assert_equal 'downloads#show', @response.body + assert_equal expected_params, @request.symbolized_path_parameters + assert_equal '/downloads/1/1.tar', download_path('1') + assert_equal '/downloads/1/1.tar', download_path('1', '1') + end + private def draw(&block) |