diff options
author | Prem Sichanugrist <s@sikachu.com> | 2011-12-02 13:13:36 -0500 |
---|---|---|
committer | Prem Sichanugrist <s@sikachu.com> | 2011-12-06 21:15:27 -0500 |
commit | 0460b3a46920ccf7d70d6699a3da06ca9663c1f6 (patch) | |
tree | 65a69489d05a420428b87806e8a125b66c6749e8 /actionpack/lib/action_controller | |
parent | 885a599303585b796da7a0a1c3ccd0bc5c642134 (diff) | |
download | rails-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.rb | 28 |
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 <?>", |