提交 00d1b132 编写于 作者: Y Yves Senn

Merge pull request #15178 from zuhao/refactor_actionpack_respond_with_test

Deregister csv renderer after test to prevent leak.
......@@ -6,6 +6,11 @@ def self.add_renderer(key, &block)
Renderers.add(key, &block)
end
# See <tt>Renderers.remove</tt>
def self.remove_renderer(key)
Renderers.remove(key)
end
class MissingRenderer < LoadError
def initialize(format)
super "No renderer defined for format: #{format}"
......@@ -83,6 +88,17 @@ def self.add(key, &block)
RENDERERS << key.to_sym
end
# This method is the opposite of add method.
#
# Usage:
#
# ActionController::Renderers.remove(:csv)
def self.remove(key)
RENDERERS.delete(key.to_sym)
method = "_render_option_#{key}"
remove_method(method) if method_defined?(method)
end
module All
extend ActiveSupport::Concern
include Renderers
......
......@@ -643,6 +643,8 @@ def test_uses_renderer_if_an_api_behavior
get :index, format: 'csv'
assert_equal Mime::CSV, @response.content_type
assert_equal "c,s,v", @response.body
ensure
ActionController::Renderers.remove :csv
end
def test_raises_missing_renderer_if_an_api_behavior_with_no_renderer
......@@ -652,6 +654,23 @@ def test_raises_missing_renderer_if_an_api_behavior_with_no_renderer
end
end
def test_removing_renderers
ActionController::Renderers.add :csv do |obj, options|
send_data obj.to_csv, type: Mime::CSV
end
@controller = CsvRespondWithController.new
@request.accept = "text/csv"
get :index, format: 'csv'
assert_equal Mime::CSV, @response.content_type
ActionController::Renderers.remove :csv
assert_raise ActionController::MissingRenderer do
get :index, format: 'csv'
end
ensure
ActionController::Renderers.remove :csv
end
def test_error_is_raised_if_no_respond_to_is_declared_and_respond_with_is_called
@controller = EmptyRespondWithController.new
@request.accept = "*/*"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册