mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Include routes.mounted_helpers into integration tests
In integration tests, you might want to use helpers from engines that you mounted in your application. It's not hard to add it by yourself, but it's unneeded boilerplate. mounted_helpers are now included by default. That means that given engine mounted like: mount Foo::Engine => "/foo", :as => "foo" you will be able to use paths from this engine in tests this way: foo.root_path #=> "/foo" (closes #6573)
This commit is contained in:
parent
7013f73c3b
commit
6525002297
4 changed files with 27 additions and 3 deletions
|
@ -1,5 +1,7 @@
|
|||
## Rails 4.0.0 (unreleased) ##
|
||||
|
||||
* Include mounted_helpers (helpers for accessing mounted engines) in ActionDispatch::IntegrationTest by default. *Piotr Sarnacki*
|
||||
|
||||
* Extracted redirect logic from `ActionController::ForceSSL::ClassMethods.force_ssl` into `ActionController::ForceSSL#force_ssl_redirect`
|
||||
|
||||
*Jeremy Friesen*
|
||||
|
|
|
@ -1327,7 +1327,7 @@ module ActionDispatch
|
|||
msg += @draw_paths.map { |_path| " * #{_path}" }.join("\n")
|
||||
raise ArgumentError, msg
|
||||
end
|
||||
|
||||
|
||||
route_path = "#{path}/#{name}.rb"
|
||||
instance_eval(File.read(route_path), route_path.to_s)
|
||||
end
|
||||
|
|
|
@ -193,8 +193,11 @@ module ActionDispatch
|
|||
|
||||
# If the app is a Rails app, make url_helpers available on the session
|
||||
# This makes app.url_for and app.foo_path available in the console
|
||||
if app.respond_to?(:routes) && app.routes.respond_to?(:url_helpers)
|
||||
singleton_class.class_eval { include app.routes.url_helpers }
|
||||
if app.respond_to?(:routes)
|
||||
singleton_class.class_eval do
|
||||
include app.routes.url_helpers if app.routes.respond_to?(:url_helpers)
|
||||
include app.routes.mounted_helpers if app.routes.respond_to?(:mounted_helpers)
|
||||
end
|
||||
end
|
||||
|
||||
reset!
|
||||
|
|
|
@ -538,11 +538,26 @@ class ApplicationIntegrationTest < ActionDispatch::IntegrationTest
|
|||
@routes ||= ActionDispatch::Routing::RouteSet.new
|
||||
end
|
||||
|
||||
class MountedApp
|
||||
def self.routes
|
||||
@routes ||= ActionDispatch::Routing::RouteSet.new
|
||||
end
|
||||
|
||||
routes.draw do
|
||||
get 'baz', :to => 'application_integration_test/test#index', :as => :baz
|
||||
end
|
||||
|
||||
def self.call(*)
|
||||
end
|
||||
end
|
||||
|
||||
routes.draw do
|
||||
get '', :to => 'application_integration_test/test#index', :as => :empty_string
|
||||
|
||||
get 'foo', :to => 'application_integration_test/test#index', :as => :foo
|
||||
get 'bar', :to => 'application_integration_test/test#index', :as => :bar
|
||||
|
||||
mount MountedApp => '/mounted', :as => "mounted"
|
||||
end
|
||||
|
||||
def app
|
||||
|
@ -555,6 +570,10 @@ class ApplicationIntegrationTest < ActionDispatch::IntegrationTest
|
|||
assert_equal '/bar', bar_path
|
||||
end
|
||||
|
||||
test "includes mounted helpers" do
|
||||
assert_equal '/mounted/baz', mounted.baz_path
|
||||
end
|
||||
|
||||
test "route helpers after controller access" do
|
||||
get '/'
|
||||
assert_equal '/', empty_string_path
|
||||
|
|
Loading…
Reference in a new issue