[rspec-users] [newbie] CSS navigation in controller response?

Evgeniy Dolzhenko dolzenko at gmail.com
Tue Jan 25 01:08:33 EST 2011


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?
>



More information about the rspec-users mailing list