[rspec-users] Ordering in view specs using have_tag and with_tag

Wincent Colaiuta win at wincent.com
Tue May 29 05:36:28 EDT 2007


El 29/5/2007, a las 4:00, David Chelimsky escribió:

> Actually - looking at assert_select (which have_tag and with_tag
> wrap), you should be able to get what you're looking for using the
> nth-child selectors. Check it out:
>
> http://labnotes.org/svn/public/ruby/rails_plugins/assert_select/ 
> cheat/assert_select.html

Great cheat sheet, that one! Thanks for sharing the link. There's  
also a PDF if anyone wants to print it out:

http://labnotes.org/svn/public/ruby/rails_plugins/assert_select/cheat/ 
assert_select.pdf

Yes, I think that would definitely work. If we add that to the list  
of possible techniques we now have three levels of specificity;  
working from least to most specific we have:

1. No ordering requirements, when you only care about the presence of  
tags on the page.

2. Strict ordering requirement, as implemented by the assert_select  
patch that I posted, where you expect tags to appear in the order  
that you assert them in your specs.

3. Ultra-strict positioning, using the nth-child selectors as you  
suggest, where you not only care about the order of the tags but  
specify their numeric position within the list.

Obviously as you move through the list from less to more specific  
your specs become more tightly bound to the structural details of the  
view, it becomes harder to change the view without breaking the  
specs, which in turn means you'll tend to pick up mistakes in the  
view more quickly, but you'll also have a lot more duplication  
between view and spec.

So I guess it's a matter of choosing the right tool for each case.

Cheers,
Wincent



More information about the rspec-users mailing list