diff options
| -rw-r--r-- | actionpack/CHANGELOG.md | 5 | ||||
| -rw-r--r-- | actionpack/lib/action_controller/test_case.rb | 10 | ||||
| -rw-r--r-- | actionpack/test/controller/render_test.rb | 11 | 
3 files changed, 23 insertions, 3 deletions
| diff --git a/actionpack/CHANGELOG.md b/actionpack/CHANGELOG.md index fd54315d96..ebd92ed0c9 100644 --- a/actionpack/CHANGELOG.md +++ b/actionpack/CHANGELOG.md @@ -1,5 +1,10 @@  ## Rails 3.2.9 (unreleased) ## +*   Warn when the `:locals` option is passed to `assert_template` outside of a view test case +    Fix #3415 + +    *Yves Senn* +  *   Rename internal variables on ActionController::TemplateAssertions to prevent      naming collisions. @partials, @templates and @layouts are now prefixed with an underscore.      Fix #7459 diff --git a/actionpack/lib/action_controller/test_case.rb b/actionpack/lib/action_controller/test_case.rb index 3a7fe22a9c..d486f32c01 100644 --- a/actionpack/lib/action_controller/test_case.rb +++ b/actionpack/lib/action_controller/test_case.rb @@ -110,9 +110,13 @@ module ActionController          if expected_partial = options[:partial]            if expected_locals = options[:locals] -            actual_locals = @locals[expected_partial.to_s.sub(/^_/,'')] -            expected_locals.each_pair do |k,v| -              assert_equal(v, actual_locals[k]) +            if defined?(@locals) +              actual_locals = @locals[expected_partial.to_s.sub(/^_/,'')] +              expected_locals.each_pair do |k,v| +                assert_equal(v, actual_locals[k]) +              end +            else +              warn "the :locals option to #assert_template is only supported in a ActionView::TestCase"              end            elsif expected_count = options[:count]              actual_count = @_partials[expected_partial] diff --git a/actionpack/test/controller/render_test.rb b/actionpack/test/controller/render_test.rb index afaf9e5ea9..fac48df323 100644 --- a/actionpack/test/controller/render_test.rb +++ b/actionpack/test/controller/render_test.rb @@ -1405,6 +1405,17 @@ class RenderTest < ActionController::TestCase      assert_equal "Bonjour: davidBonjour: mary", @response.body    end +  def test_locals_option_to_assert_template_is_not_supported +    warning_buffer = StringIO.new +    $stderr = warning_buffer + +    get :partial_collection_with_locals +    assert_template partial: 'customer_greeting', locals: { greeting: 'Bonjour' } +    assert_equal "the :locals option to #assert_template is only supported in a ActionView::TestCase\n", warning_buffer.string +  ensure +    $stderr = STDERR +  end +    def test_partial_collection_with_spacer      get :partial_collection_with_spacer      assert_equal "Hello: davidonly partialHello: mary", @response.body | 
