On Mar 15, 2009, at 10:33 AM, Zach Dennis wrote:
On Sun, Mar 15, 2009 at 1:05 PM, Phlip <phlip2...@gmail.com> wrote:
response.body.should be_html_with{
form :action => '/users' do
fieldset do
legend 'Personal Information'
label 'First name'
input :type => 'text', :name => 'user[first_name]'
end
end
}
Has anyone tried this? is it useful?
That assertion sucks! The actual sample HTML sez:
<fieldset>
<legend>Personal Information</legend>
<ol>
<li id="control_user_first_name">
<label for="user_first_name">First name</label>
<input type="text" name="user[first_name]"
id="user_first_name" />
</li>
</ol>
</fieldset>
The <legend> and <label> live in different containers, so they are
not peers
of each other. But the assertion specifies they are!
I didn't have the expectation that they were peers of each other, just
that they both existed somewhere in a fieldset tag. Any helper or
matchers used for spec'ing views should be as liberal as possible
while still communicating enough about the semantics of the page for
the example to be meaningful.
I would not expect nor want a matcher to default to verifying direct
descendant, sibling, or adjacent nodes. Those are best verified by a
person looking at the page. What I do care about is that fields in are
within a fieldset (but not necessarily immediately next to each
other).
Both of those points make sense to me. What about
response.body.should be_html_with{
form :action => '/users' do
fieldset do
legend 'Personal Information'
anything do
label 'First name'
input :type => 'text', :name => 'user[first_name]'
end
end
end
}
I dunno. Zach's original attempt hardly "sucks". But maybe you want
to make the structure a bit more explicit? Personally I think that it
becomes too coupled to the HTML, and "anything {}" is added noise, but
maybe that gets you moving in the right direction.
Pat
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users