From 74e59ea8b674fac08a6ea4da03e58e29fc57a709 Mon Sep 17 00:00:00 2001 From: Mack Earnhardt Date: Sun, 24 Mar 2013 07:54:55 -0400 Subject: Backport #5808 df36c5f - Fix assert_template assertion with :layout option 4bd05a7 - Fix assert_template :layout => nil assertion 0d19a08 - Improve assert_template layout checking --- actionpack/lib/action_controller/test_case.rb | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'actionpack/lib') diff --git a/actionpack/lib/action_controller/test_case.rb b/actionpack/lib/action_controller/test_case.rb index bc6828a805..cd9848d65b 100644 --- a/actionpack/lib/action_controller/test_case.rb +++ b/actionpack/lib/action_controller/test_case.rb @@ -20,7 +20,12 @@ module ActionController ActiveSupport::Notifications.subscribe("render_template.action_view") do |name, start, finish, id, payload| path = payload[:layout] - @layouts[path] += 1 + if path + @layouts[path] += 1 + if path =~ /^layouts\/(.*)/ + @layouts[$1] += 1 + end + end end ActiveSupport::Notifications.subscribe("!render_template.action_view") do |name, start, finish, id, payload| @@ -56,6 +61,15 @@ module ActionController # # assert that the "new" view template was rendered # assert_template "new" # + # # assert that the layout 'admin' was rendered + # assert_template :layout => 'admin' + # assert_template :layout => 'layouts/admin' + # assert_template :layout => :admin + # + # # assert that no layout was rendered + # assert_template :layout => nil + # assert_template :layout => false + # # # assert that the "_customer" partial was rendered twice # assert_template :partial => '_customer', :count => 2 # @@ -88,17 +102,18 @@ module ActionController end end when Hash - if expected_layout = options[:layout] + if options.key?(:layout) + expected_layout = options[:layout] msg = build_message(message, "expecting layout but action rendered ", expected_layout, @layouts.keys) case expected_layout - when String - assert(@layouts.keys.include?(expected_layout), msg) + when String, Symbol + assert_includes @layouts.keys, expected_layout.to_s, msg when Regexp assert(@layouts.keys.any? {|l| l =~ expected_layout }, msg) - when nil + when nil, false assert(@layouts.empty?, msg) end end @@ -125,7 +140,7 @@ module ActionController options[:partial], @partials.keys) assert(@partials.include?(expected_partial), msg) end - else + elsif options.key?(:partial) assert @partials.empty?, "Expected no partials to be rendered" end -- cgit v1.2.3