Allow use of assert_template with the :file option.
This worked in Rails 3.2, but was a regression in 4.0.0.beta1
This commit is contained in:
parent
b49a2a779b
commit
73deb3af23
@ -16,6 +16,12 @@
|
||||
|
||||
*Yves Senn*
|
||||
|
||||
* Fixed regression when using `assert_template` to verify files sent using
|
||||
`render file: 'README.md'`.
|
||||
Fixes #9464.
|
||||
|
||||
*Justin Coyne*
|
||||
|
||||
* Skip valid encoding checks for non-String parameters that come
|
||||
from the matched route's defaults.
|
||||
Fixes #9435.
|
||||
|
@ -16,6 +16,7 @@ def setup_subscriptions
|
||||
@_partials = Hash.new(0)
|
||||
@_templates = Hash.new(0)
|
||||
@_layouts = Hash.new(0)
|
||||
@_files = Hash.new(0)
|
||||
|
||||
ActiveSupport::Notifications.subscribe("render_template.action_view") do |name, start, finish, id, payload|
|
||||
path = payload[:layout]
|
||||
@ -39,6 +40,16 @@ def setup_subscriptions
|
||||
|
||||
@_templates[path] += 1
|
||||
end
|
||||
|
||||
ActiveSupport::Notifications.subscribe("!render_template.action_view") do |name, start, finish, id, payload|
|
||||
path = payload[:identifier]
|
||||
next if payload[:virtual_path] # files don't have virtual path
|
||||
if path
|
||||
@_files[path] += 1
|
||||
@_files[path.split("/").last] += 1
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
def teardown_subscriptions
|
||||
@ -106,7 +117,7 @@ def assert_template(options = {}, message = nil)
|
||||
end
|
||||
assert matches_template, msg
|
||||
when Hash
|
||||
options.assert_valid_keys(:layout, :partial, :locals, :count)
|
||||
options.assert_valid_keys(:layout, :partial, :locals, :count, :file)
|
||||
|
||||
if options.key?(:layout)
|
||||
expected_layout = options[:layout]
|
||||
@ -123,6 +134,10 @@ def assert_template(options = {}, message = nil)
|
||||
end
|
||||
end
|
||||
|
||||
if options[:file]
|
||||
assert_includes @_files.keys, options[:file]
|
||||
end
|
||||
|
||||
if expected_partial = options[:partial]
|
||||
if expected_locals = options[:locals]
|
||||
if defined?(@_rendered_views)
|
||||
|
@ -138,7 +138,7 @@ def supports_streaming?
|
||||
# we use a bang in this instrumentation because you don't want to
|
||||
# consume this in production. This is only slow if it's being listened to.
|
||||
def render(view, locals, buffer=nil, &block)
|
||||
ActiveSupport::Notifications.instrument("!render_template.action_view", :virtual_path => @virtual_path) do
|
||||
ActiveSupport::Notifications.instrument("!render_template.action_view", :virtual_path => @virtual_path, :identifier=>@identifier) do
|
||||
compile!(view)
|
||||
view.send(method_name, locals, buffer, &block)
|
||||
end
|
||||
|
@ -219,6 +219,7 @@ def view
|
||||
:@_routes,
|
||||
:@controller,
|
||||
:@_layouts,
|
||||
:@_files,
|
||||
:@_rendered_views,
|
||||
:@method_name,
|
||||
:@output_buffer,
|
||||
|
@ -96,6 +96,14 @@ def raise_exception_on_post
|
||||
raise "post" if request.post?
|
||||
render :text => "request method: #{request.env['REQUEST_METHOD']}"
|
||||
end
|
||||
|
||||
def render_file_absolute_path
|
||||
render :file => File.expand_path('../../../README.rdoc', __FILE__)
|
||||
end
|
||||
|
||||
def render_file_relative_path
|
||||
render :file => 'README.rdoc'
|
||||
end
|
||||
end
|
||||
|
||||
# Used to test that assert_response includes the exception message
|
||||
@ -142,6 +150,16 @@ def test_assert_tag_and_url_for
|
||||
assert_tag :content => "/action_pack_assertions/flash_me"
|
||||
end
|
||||
|
||||
def test_render_file_absolute_path
|
||||
get :render_file_absolute_path
|
||||
assert_match /\A= Action Pack/, @response.body
|
||||
end
|
||||
|
||||
def test_render_file_relative_path
|
||||
get :render_file_relative_path
|
||||
assert_match /\A= Action Pack/, @response.body
|
||||
end
|
||||
|
||||
def test_get_request
|
||||
assert_raise(RuntimeError) { get :raise_exception_on_get }
|
||||
get :raise_exception_on_post
|
||||
@ -441,6 +459,23 @@ def test_with_partial
|
||||
assert_template :partial => '_partial'
|
||||
end
|
||||
|
||||
def test_file_with_absolute_path_success
|
||||
get :render_file_absolute_path
|
||||
assert_template :file => File.expand_path('../../../README.rdoc', __FILE__)
|
||||
end
|
||||
|
||||
def test_file_with_relative_path_success
|
||||
get :render_file_relative_path
|
||||
assert_template :file => 'README.rdoc'
|
||||
end
|
||||
|
||||
def test_with_file_failure
|
||||
get :render_file_absolute_path
|
||||
assert_raise(ActiveSupport::TestCase::Assertion) do
|
||||
assert_template :file => 'test/hello_world'
|
||||
end
|
||||
end
|
||||
|
||||
def test_with_nil_passes_when_no_template_rendered
|
||||
get :nothing
|
||||
assert_template nil
|
||||
|
Loading…
Reference in New Issue
Block a user