You can pass a block to `have_selector` to nest your assertions, like:
response.should have_selector("td", :class => "status") do |td| td.to_s.should == /moribund/i # => td is [#<Nokogiri::XML::Element ...>, ...] here end On 1/25/2011 12:19 AM, Fearless Fool wrote:
I'm hooked on RSpec after my first taste (thanks to http://railstutorial.org/book/ruby-on-rails-tutorial). And of course I have a newbish question. Assume a contrived doc structure like: <table class="navbar"> <tr> <td class="status">moribund</td> </tr> </table> Now lets say I want to write an RSpec controller test that will pass if the status is "moribund" or "Moribund" or "MORIBUND". I know I can write: it "should be moribund" do get :show response.should have_selector("td", :class => "status", :content => "moribund") end ... which captures the fact that the status string is inside a "td.status" element, but is case sensitive. Alternatively I could write: it "should be moribund" do get :show response.body.should =~ /moribund/i end ... which is case insensitive but doesn't discriminate where the string appears in the document. What's the right idiom to navigate to a specific place in a document (preferably using CSS navigation syntax) AND perform a case-insensitive test? TIA. - ff P.S.: I fully appreciate that you shouldn't normally hardwire the document structure into the test itself -- that's not what this question is about! :) P.P.S: I know that response is an ActionController::TestResponse object, but haven't been able to find docs or sources for that -- where should I look?
_______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users