assert_template fails with empty string when a template has been rendered

For instance, it prevents false positive in this case:

    file = nil
    get :index
    assert_template("#{file}")
This commit is contained in:
Roberto Soares 2012-11-23 16:13:08 -03:00
parent 36ee5802a5
commit 20723ca498
3 changed files with 19 additions and 4 deletions

@ -1,5 +1,9 @@
## Rails 4.0.0 (unreleased) ##
* `assert_template` is no more passing with empty string when some template has been rendered.
*Roberto Soares*
* Allow setting a symbol as path in scope on routes. This is now allowed:
scope :api do

@ -94,10 +94,14 @@ def assert_template(options = {}, message = nil)
matches_template =
case options
when String
rendered.any? do |t, num|
options_splited = options.split(File::SEPARATOR)
t_splited = t.split(File::SEPARATOR)
t_splited.last(options_splited.size) == options_splited
if options.empty?
rendered.blank?
else
rendered.any? do |t, num|
options_splited = options.split(File::SEPARATOR)
t_splited = t.split(File::SEPARATOR)
t_splited.last(options_splited.size) == options_splited
end
end
when Regexp
rendered.any? { |t,num| t.match(options) }

@ -447,6 +447,13 @@ def test_with_nil_fails_when_template_rendered
end
end
def test_with_empty_string_fails_when_template_rendered
get :hello_world
assert_raise(ActiveSupport::TestCase::Assertion) do
assert_template ""
end
end
def test_passes_with_correct_string
get :hello_world
assert_template 'hello_world'