Take in to account optional arguments when deprecating

Refs: rails/jbuilder#452
This commit is contained in:
Aaron Patterson 2019-02-04 13:21:18 -08:00
parent cc2d614e63
commit 0fa0107d2d
No known key found for this signature in database
GPG Key ID: 953170BCB4FFAFC6
2 changed files with 10 additions and 1 deletions

View File

@ -43,7 +43,7 @@ module ActionView #:nodoc:
handler.method(:call).parameters handler.method(:call).parameters
end end
unless params.find_all { |type, _| type == :req }.length >= 2 unless params.find_all { |type, _| type == :req || type == :opt }.length >= 2
ActiveSupport::Deprecation.warn <<~eowarn ActiveSupport::Deprecation.warn <<~eowarn
Single arity template handlers are deprecated. Template handlers must Single arity template handlers are deprecated. Template handlers must
now accept two parameters, the view object and the source for the view object. now accept two parameters, the view object and the source for the view object.

View File

@ -471,6 +471,15 @@ module RenderTestCases
ActionView::Template.unregister_template_handler :ruby_handler ActionView::Template.unregister_template_handler :ruby_handler
end end
def test_optional_second_arg_works_without_deprecation
assert_not_deprecated do
ActionView::Template.register_template_handler :ruby_handler, ->(view, source = nil) { source }
end
assert_equal "3", @view.render(inline: "(1 + 2).to_s", type: :ruby_handler)
ensure
ActionView::Template.unregister_template_handler :ruby_handler
end
def test_render_inline_with_compilable_custom_type def test_render_inline_with_compilable_custom_type
ActionView::Template.register_template_handler :foo, CustomHandler ActionView::Template.register_template_handler :foo, CustomHandler
assert_equal 'source: "Hello, World!"', @view.render(inline: "Hello, World!", type: :foo) assert_equal 'source: "Hello, World!"', @view.render(inline: "Hello, World!", type: :foo)