aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/dispatch/routing/route_set_test.rb
diff options
context:
space:
mode:
authorJonathan del Strother <jdelStrother@gmail.com>2017-06-22 13:10:21 +0100
committerJonathan del Strother <jdelStrother@gmail.com>2017-06-23 09:42:57 +0100
commit2c0300389c3f6be00bf6c6b806332808a9400429 (patch)
tree8c00959f2de3c8bb380f418e36530f01337b1a17 /actionpack/test/dispatch/routing/route_set_test.rb
parent5de611afe63f9a30360d49db90e864d1d29dc283 (diff)
downloadrails-2c0300389c3f6be00bf6c6b806332808a9400429.tar.gz
rails-2c0300389c3f6be00bf6c6b806332808a9400429.tar.bz2
rails-2c0300389c3f6be00bf6c6b806332808a9400429.zip
Fix missing formats in route-set URLs
Before this change, handle_positional_args would end up mutating @segment_keys if inner_options included path components. Subsequent calls would then be missing the implicit path components. eg: user_path(1, :json) # => "/users/1.json" (correct) user_path(1, format: :json) # => "/users/1.json" (correct, but @segment_keys was mutated) user_path(1, :json) # => "/users/1" (oh no!)
Diffstat (limited to 'actionpack/test/dispatch/routing/route_set_test.rb')
-rw-r--r--actionpack/test/dispatch/routing/route_set_test.rb9
1 files changed, 9 insertions, 0 deletions
diff --git a/actionpack/test/dispatch/routing/route_set_test.rb b/actionpack/test/dispatch/routing/route_set_test.rb
index ace35dda53..d6ecbda092 100644
--- a/actionpack/test/dispatch/routing/route_set_test.rb
+++ b/actionpack/test/dispatch/routing/route_set_test.rb
@@ -138,6 +138,15 @@ module ActionDispatch
assert_equal "/a/users/1", url_helpers.user_path(1, foo: "a")
end
+ test "implicit path components consistently return the same result" do
+ draw do
+ resources :users, to: SimpleApp.new("foo#index")
+ end
+ assert_equal "/users/1.json", url_helpers.user_path(1, :json)
+ assert_equal "/users/1.json", url_helpers.user_path(1, format: :json)
+ assert_equal "/users/1.json", url_helpers.user_path(1, :json)
+ end
+
private
def draw(&block)
@set.draw(&block)