[rspec-users] have_tag with a block

MarkMT mark.thomson at ieee.org
Wed Feb 4 00:44:34 EST 2009


Thanks David. Those specs are very instructive. I have no idea what I
was doing wrong before, but the behavior I'm seeing now is indeed
consistent with the specs and matches what I had understood from the
code I'd looked at (I suspect it'll stop working as soon as I send
this :-) ).

Actually my situation is slightly more complex than what the specs
cover. I have something like this -

<div id="registration_link">
  New user? Register <a href="/User/register">here</a>
</div>

and I'm testing it with a cucumber step that looks like this -

Then /^the response should contain a link to new user registration$/
do
  @response.should have_tag('div', :id =>'registration_link', :content
=> 'New User? Register ') { |match|
    match.should have_tag('a', :href => '/User/register', :content =>
'here')
  }
end

One of the things I was unsure about was whether I could mix both the
text content and the second tag inside the outer element. Turns out
that this works just fine with the test above. Also, have_tag
('div#registration_link'...) works just as well as have_tag('div', :id
=> 'registration_link'...)

Mark.


On Feb 3, 8:01 pm, David Chelimsky <dchelim... at gmail.com> wrote:
> On Tue, Feb 3, 2009 at 7:52 PM, MarkMT <mark.thom... at ieee.org> wrote:
> > This is really a webrat question, but I haven't had any reaction to
> > this from the webrat group. Maybe someone here can offer a comment...
>
> > I've been fooling around with webrat view matchers in merb / cucumber
> > and I'm trying to figure out whether the block parameter in have_tag
> > actually does anything. I've tried passing a block with pure nonsense
> > in it and the interpreter just seems to accept it and ignore it as if
> > it doesn't exist.
>
> > Initially I had hoped there was something like 'with_tag' you could
> > nest inside a block, but I guess that was a rails thing. However from
> > my quick look at the code, although with fairly limited ruby
> > experience, I got the impression that 'have_tag' passes any matching
> > markup it finds into the block as a parameter. But none of my
> > experiments have been able to confirm this.
>
> > Does anyone have first hand knowledge of / successful experience with
> > have_tag with a block?
>
> Not first hand experience, but I'm looking at the specs in webrat:
>
> http://github.com/brynary/webrat/blob/e5ae16367cfd656617815fd9b9c405b...
>
> If you scroll down to describe "#have_tag", you'll see a couple of
> examples. It looks like your instinct is at least close to correct.
>
> Can you post an example of what you're trying to do?
>
> > _______________________________________________
> > rspec-users mailing list
> > rspec-us... at rubyforge.org
> >http://rubyforge.org/mailman/listinfo/rspec-users
>
> _______________________________________________
> rspec-users mailing list
> rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users


More information about the rspec-users mailing list