mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
partials inside directory work with assert_template
previously when a partial was placed inside a directory (eg. '/dir/_partial'), `assert_template` did not replace the '_' prefix when looking through rendered tempaltes, which resulted in an error. I modified it to replace both, the leading '_' and the last '_' after a '/'.
This commit is contained in:
parent
c21ab338cb
commit
cce94e7232
6 changed files with 30 additions and 3 deletions
|
@ -1,5 +1,17 @@
|
|||
## Rails 4.0.0 (unreleased) ##
|
||||
|
||||
* `assert_template` can be used to verify the locals of partials,
|
||||
which live inside a directory.
|
||||
Fixes #8516.
|
||||
|
||||
# Prefixed partials inside directories worked and still work.
|
||||
assert_template partial: 'directory/_partial', locals: {name: 'John'}
|
||||
|
||||
# This did not work but does now.
|
||||
assert_template partial: 'directory/partial', locals: {name: 'John'}
|
||||
|
||||
*Yves Senn*
|
||||
|
||||
* Fix `content_tag_for` with array html option.
|
||||
It would embed array as string instead of joining it like `content_tag` does:
|
||||
|
||||
|
@ -248,7 +260,7 @@
|
|||
|
||||
* More descriptive error messages when calling `render :partial` with
|
||||
an invalid `:layout` argument.
|
||||
|
||||
|
||||
Fixes #8376.
|
||||
|
||||
render partial: 'partial', layout: true
|
||||
|
|
|
@ -126,7 +126,8 @@ module ActionController
|
|||
if expected_partial = options[:partial]
|
||||
if expected_locals = options[:locals]
|
||||
if defined?(@_rendered_views)
|
||||
view = expected_partial.to_s.sub(/^_/,'')
|
||||
view = expected_partial.to_s.sub(/^_/, '').sub(/\/_(?=[^\/]+\z)/, '/')
|
||||
|
||||
partial_was_not_rendered_msg = "expected %s to be rendered but it was not." % view
|
||||
assert_includes @_rendered_views.rendered_views, view, partial_was_not_rendered_msg
|
||||
|
||||
|
|
|
@ -122,7 +122,7 @@ module ActionView
|
|||
|
||||
class RenderedViewsCollection
|
||||
def initialize
|
||||
@rendered_views ||= {}
|
||||
@rendered_views ||= Hash.new { |hash, key| hash[key] = [] }
|
||||
end
|
||||
|
||||
def add(view, locals)
|
||||
|
|
1
actionpack/test/fixtures/test/_directory/_partial_with_locales.html.erb
vendored
Normal file
1
actionpack/test/fixtures/test/_directory/_partial_with_locales.html.erb
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
Hello <%= name %>
|
1
actionpack/test/fixtures/test/render_partial_inside_directory.html.erb
vendored
Normal file
1
actionpack/test/fixtures/test/render_partial_inside_directory.html.erb
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
<%= render partial: 'test/_directory/partial_with_locales', locals: {'name' => 'Jane'} %>
|
|
@ -338,6 +338,18 @@ module ActionView
|
|||
assert_match "i_was_never_rendered to be rendered but it was not.", e.message
|
||||
assert_match 'Expected ["/test/partial"] to include "i_was_never_rendered"', e.message
|
||||
end
|
||||
|
||||
test 'specifying locals works when the partial is inside a directory with underline prefix' do
|
||||
controller.controller_path = "test"
|
||||
render(template: 'test/render_partial_inside_directory')
|
||||
assert_template partial: 'test/_directory/_partial_with_locales', locals: { 'name' => 'Jane' }
|
||||
end
|
||||
|
||||
test 'specifying locals works when the partial is inside a directory without underline prefix' do
|
||||
controller.controller_path = "test"
|
||||
render(template: 'test/render_partial_inside_directory')
|
||||
assert_template partial: 'test/_directory/partial_with_locales', locals: { 'name' => 'Jane' }
|
||||
end
|
||||
end
|
||||
|
||||
module AHelperWithInitialize
|
||||
|
|
Loading…
Reference in a new issue