instance method
with_routing
Ruby on Rails 4.0.13
Since v3.0.20Signature
with_routing()
A helper to make it easier to test different route configurations. This method temporarily replaces @routes with a new RouteSet instance.
The new instance is yielded to the passed block. Typically the block will create some routes using set.draw { match ... }:
with_routing do |set| set.draw do resources :users end assert_equal "/users", users_path end
Source
# File actionpack/lib/action_dispatch/testing/assertions/routing.rb, line 141
def with_routing
old_routes, @routes = @routes, ActionDispatch::Routing::RouteSet.new
if defined?(@controller) && @controller
old_controller, @controller = @controller, @controller.clone
_routes = @routes
# Unfortunately, there is currently an abstraction leak between AC::Base
# and AV::Base which requires having the URL helpers in both AC and AV.
# To do this safely at runtime for tests, we need to bump up the helper serial
# to that the old AV subclass isn't cached.
#
# TODO: Make this unnecessary
@controller.singleton_class.send(:include, _routes.url_helpers)
@controller.view_context_class = Class.new(@controller.view_context_class) do
include _routes.url_helpers
end
end
yield @routes
ensure
@routes = old_routes
if defined?(@controller) && @controller
@controller = old_controller
end
end
Defined in actionpack/lib/action_dispatch/testing/assertions/routing.rb line 141
· View on GitHub
· Improve this page
· Find usages on GitHub