aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/test_case.rb
diff options
context:
space:
mode:
authorCarlhuda <carlhuda@engineyard.com>2010-03-17 16:28:05 -0700
committerCarlhuda <carlhuda@engineyard.com>2010-03-17 16:29:35 -0700
commitd9375f3f302a5d1856ad57946c7263d4e6a45a2a (patch)
tree76769a45da7b1315df173976067ff37edcb59b49 /actionpack/lib/action_controller/test_case.rb
parent7872fa9a4397c450ee22c511966e149d594d153e (diff)
downloadrails-d9375f3f302a5d1856ad57946c7263d4e6a45a2a.tar.gz
rails-d9375f3f302a5d1856ad57946c7263d4e6a45a2a.tar.bz2
rails-d9375f3f302a5d1856ad57946c7263d4e6a45a2a.zip
Modify assert_template to use notifications. Also, remove ActionController::Base#template since it is no longer needed.
Diffstat (limited to 'actionpack/lib/action_controller/test_case.rb')
-rw-r--r--actionpack/lib/action_controller/test_case.rb20
1 files changed, 20 insertions, 0 deletions
diff --git a/actionpack/lib/action_controller/test_case.rb b/actionpack/lib/action_controller/test_case.rb
index 330b950d7c..8ab0c32a9e 100644
--- a/actionpack/lib/action_controller/test_case.rb
+++ b/actionpack/lib/action_controller/test_case.rb
@@ -13,6 +13,13 @@ module ActionController
def setup_subscriptions
@partials = Hash.new(0)
@templates = Hash.new(0)
+ @layouts = Hash.new(0)
+
+ ActiveSupport::Notifications.subscribe("action_view.render_template") do |name, start, finish, id, payload|
+ path = payload[:layout]
+ @layouts[path] += 1
+ end
+
ActiveSupport::Notifications.subscribe("action_view.render_template!") do |name, start, finish, id, payload|
path = payload[:virtual_path]
next unless path
@@ -69,6 +76,19 @@ module ActionController
"expecting ? to be rendered ? time(s) but rendered ? time(s)",
expected_partial, expected_count, actual_count)
assert(actual_count == expected_count.to_i, msg)
+ elsif options.key?(:layout)
+ msg = build_message(message,
+ "expecting layout <?> but action rendered <?>",
+ expected_layout, @layouts.keys)
+
+ case layout = options[:layout]
+ when String
+ assert(@layouts.include?(expected_layout), msg)
+ when Regexp
+ assert(@layouts.any? {|l| l =~ layout }, msg)
+ when nil
+ assert(@layouts.empty?, msg)
+ end
else
msg = build_message(message,
"expecting partial <?> but action rendered <?>",