mirror of
https://github.com/github/rails.git
synced 2026-02-01 09:44:56 -05:00
Fix the html-scanner to count children correctly, playing nicely with :only, fixes #2181 [patrick@lenz.sh]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2670 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
@@ -435,7 +435,11 @@ module HTML #:nodoc:
|
||||
|
||||
# count children
|
||||
if opts = conditions[:children]
|
||||
matches = children.select { |c| c.match(/./) }
|
||||
matches = children.select do |c|
|
||||
c.match(/./) or
|
||||
(c.kind_of?(HTML::Tag) and (c.closing == :self or ! c.childless?))
|
||||
end
|
||||
|
||||
matches = matches.select { |c| c.match(opts[:only]) } if opts[:only]
|
||||
opts.each do |key, value|
|
||||
next if key == :only
|
||||
|
||||
@@ -20,6 +20,7 @@ class TestTest < Test::Unit::TestCase
|
||||
render :text => <<HTML
|
||||
<html>
|
||||
<body>
|
||||
<a href="/"><img src="/images/button.png" /></a>
|
||||
<div id="foo">
|
||||
<ul>
|
||||
<li class="item">hello</li>
|
||||
@@ -121,8 +122,8 @@ HTML
|
||||
|
||||
# there is a tag with a child 'input' tag
|
||||
assert_tag :child => { :tag => "input" }
|
||||
# there is no tag with a child 'a' tag
|
||||
assert_no_tag :child => { :tag => "a" }
|
||||
# there is no tag with a child 'strong' tag
|
||||
assert_no_tag :child => { :tag => "strong" }
|
||||
end
|
||||
|
||||
def test_assert_tag_ancestor
|
||||
@@ -233,6 +234,22 @@ HTML
|
||||
:only => { :tag => "li" } } }
|
||||
end
|
||||
|
||||
def test_assert_tag_children_without_content
|
||||
process :test_html_output
|
||||
|
||||
# there is a form tag with an 'input' child which is a self closing tag
|
||||
assert_tag :tag => "form",
|
||||
:children => { :count => 1,
|
||||
:only => { :tag => "input" } }
|
||||
|
||||
# the body tag has an 'a' child which in turn has an 'img' child
|
||||
assert_tag :tag => "body",
|
||||
:children => { :count => 1,
|
||||
:only => { :tag => "a",
|
||||
:children => { :count => 1,
|
||||
:only => { :tag => "img" } } } }
|
||||
end
|
||||
|
||||
def test_assert_generates
|
||||
assert_generates 'controller/action/5', :controller => 'controller', :action => 'action', :id => '5'
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user