Improve assert_template layout checking

This commit is contained in:
Alexey Vakhov 2012-04-11 12:45:28 +06:00
parent 4bd05a7bdc
commit 0d19a081ee
2 changed files with 30 additions and 3 deletions

@ -22,6 +22,9 @@ def setup_subscriptions
path = payload[:layout]
if path
@layouts[path] += 1
if path =~ /^layouts\/(.*)/
@layouts[$1] += 1
end
end
end
@ -61,6 +64,15 @@ def process(*args)
# # assert that the exact template "admin/posts/new" was rendered
# assert_template %r{\Aadmin/posts/new\Z}
#
# # assert that the layout 'admin' was rendered
# assert_template :layout => 'admin'
# assert_template :layout => 'layouts/admin'
# assert_template :layout => :admin
#
# # assert that no layout was rendered
# assert_template :layout => nil
# assert_template :layout => false
#
# # assert that the "_customer" partial was rendered twice
# assert_template :partial => '_customer', :count => 2
#
@ -98,11 +110,11 @@ def assert_template(options = {}, message = nil)
expected_layout, @layouts.keys)
case expected_layout
when String
assert_includes @layouts.keys, expected_layout, msg
when String, Symbol
assert_includes @layouts.keys, expected_layout.to_s, msg
when Regexp
assert(@layouts.keys.any? {|l| l =~ expected_layout }, msg)
when nil
when nil, false
assert(@layouts.empty?, msg)
end
end

@ -500,6 +500,21 @@ def test_passed_with_no_layout
assert_template :layout => nil
end
def test_passed_with_no_layout_false
get :hello_world
assert_template :layout => false
end
def test_passes_with_correct_layout_without_layouts_prefix
get :render_with_layout
assert_template :layout => "standard"
end
def test_passes_with_correct_layout_symbol
get :render_with_layout
assert_template :layout => :standard
end
def test_assert_template_reset_between_requests
get :hello_world
assert_template 'test/hello_world'