views:

36

answers:

1

I'm learning RSpec 2 with Rails 3 and while it's been going along quite nicely so far, I'm having a problem testing the helper link_to_unless_current in a view. What I've been trying to do is use a simple assert_select from a view spec to determine if a link is being generated in the following partial view (HAML):

%article.post{ :id => "post-#{post.id}" }
  %header.post-title
    %h2= link_to_unless_current post.title, post
  .post-content= raw post.body

However, I don't know how to get the view spec to recognize what "current" means because it's a view spec and it only tests the view, not the request. I know this would be a lot simpler in a controller spec, but I think that I should be testing what a view does in its spec and that moving this test out to a controller spec would be confusing things a lot. What I'm asking is: is there any way to tell the view spec, perhaps in a "before" block, what the current page is? Also, am I doing the right thing in respect to organizing my tests? Should this test rightfully reside in a controller spec?

A: 

Never mind, I eventually figured it out. You have to stub UrlHelper.current_page? and have it return true if the url options passed match the page you want to act as the current page:

view.stub("current_page?".to_sym) {|options| url_for(options) == post_path(@post) }

I still don't know if this is the way I should be doing RSpec tests, but, whatever, this works. :P

hatkirby