aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/testing/assertions
diff options
context:
space:
mode:
authorCarl Lerche <carllerche@mac.com>2010-03-16 14:55:42 -0700
committerCarlhuda <carlhuda@engineyard.com>2010-03-16 15:47:49 -0700
commit23b6def0eb76ac0719e420fce91ba862f880a37b (patch)
tree53ecc35cf7737fd3c3382ce54f07630d1021054d /actionpack/lib/action_dispatch/testing/assertions
parent3abf5ad7f8b23d955225ba96e82fd5565dd2571d (diff)
downloadrails-23b6def0eb76ac0719e420fce91ba862f880a37b.tar.gz
rails-23b6def0eb76ac0719e420fce91ba862f880a37b.tar.bz2
rails-23b6def0eb76ac0719e420fce91ba862f880a37b.zip
Do not always include the named URL helpers into AC::Base and AV::Base.
Diffstat (limited to 'actionpack/lib/action_dispatch/testing/assertions')
-rw-r--r--actionpack/lib/action_dispatch/testing/assertions/routing.rb18
1 files changed, 16 insertions, 2 deletions
diff --git a/actionpack/lib/action_dispatch/testing/assertions/routing.rb b/actionpack/lib/action_dispatch/testing/assertions/routing.rb
index 1d7e8090e4..eb28cd5107 100644
--- a/actionpack/lib/action_dispatch/testing/assertions/routing.rb
+++ b/actionpack/lib/action_dispatch/testing/assertions/routing.rb
@@ -145,11 +145,25 @@ module ActionDispatch
old_routes, @router = @router, ActionDispatch::Routing::RouteSet.new
old_controller, @controller = @controller, @controller.clone if @controller
_router = @router
- @controller.singleton_class.send(:send, :include, @router.url_helpers) if @controller
+
+ # 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
+ if @controller
+ @controller.singleton_class.send(:include, @router.url_helpers)
+ @controller.class._helper_serial += 1
+ @controller.view_context.singleton_class.send(:include, @router.url_helpers)
+ end
yield @router
ensure
@router = old_routes
- @controller = old_controller if @controller
+ if @controller
+ @controller = old_controller
+ @controller.class._helper_serial += 1 if @controller
+ end
end
# ROUTES TODO: These assertions should really work in an integration context