aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller
diff options
context:
space:
mode:
authorPrem Sichanugrist <s@sikachu.com>2011-12-02 13:13:36 -0500
committerPrem Sichanugrist <s@sikachu.com>2011-12-06 21:15:27 -0500
commit0460b3a46920ccf7d70d6699a3da06ca9663c1f6 (patch)
tree65a69489d05a420428b87806e8a125b66c6749e8 /actionpack/lib/action_controller
parent885a599303585b796da7a0a1c3ccd0bc5c642134 (diff)
downloadrails-0460b3a46920ccf7d70d6699a3da06ca9663c1f6.tar.gz
rails-0460b3a46920ccf7d70d6699a3da06ca9663c1f6.tar.bz2
rails-0460b3a46920ccf7d70d6699a3da06ca9663c1f6.zip
Fix bug in assert_template when using only `:layout` option
Currently if you're do this: assert_template :layout => "foo" Regardless of what layout you were using, the test will always pass. This was broken since the introduction of :layout option in [d9375f3f]. We have a lot of test cases in actionpack/test/controller/layout_test.rb that use this feature. This will make sure that those test cases are not true negative.
Diffstat (limited to 'actionpack/lib/action_controller')
-rw-r--r--actionpack/lib/action_controller/test_case.rb28
1 files changed, 15 insertions, 13 deletions
diff --git a/actionpack/lib/action_controller/test_case.rb b/actionpack/lib/action_controller/test_case.rb
index 6913c1ef4a..1731388bf3 100644
--- a/actionpack/lib/action_controller/test_case.rb
+++ b/actionpack/lib/action_controller/test_case.rb
@@ -86,6 +86,21 @@ module ActionController
end
end
when Hash
+ if 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 Regexp
+ assert(@layouts.keys.any? {|l| l =~ expected_layout }, msg)
+ when nil
+ assert(@layouts.empty?, msg)
+ end
+ end
+
if expected_partial = options[:partial]
if expected_locals = options[:locals]
actual_locals = @locals[expected_partial.to_s.sub(/^_/,'')]
@@ -98,19 +113,6 @@ 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 <?>",