[rspec-users] Need help mocking this out

Daniel N has.sox at gmail.com
Mon Dec 3 05:44:06 EST 2007


Assuming that there is a call like this in your controller
@articles = current_user.articles

One way to do this is to stub out the controller.current_user to return a
mock object of the current_user

Then put an expectation on the current user that it's articles method gets
called. (return a mocked collection of articles)

Then check that @articles is set to the returned mocked collection of
articles from current_user.articles

phew...

Ok So one way you might write this could be (This is untested...)

it "should scope the articles to the currrent_user" do

  user = mock_model(User)
  articles = [mock_model(Article)]

  controller.stub!(:current_user).and_return(user)
  user.should_receive(:articles).and_return(articles)

  get :index

  assigns[:articles].should == articles

end

Like I said though, that's not tested itself.  If that's not exactly
right... it's along the right track of an option that can work.

HTH
Daniel

On Dec 3, 2007 9:07 PM, Stefan Magnus Landrø <stefan.landro at gmail.com>
wrote:

> Typically, I'd write a method in your user model that returns the user's
> articles:
>
> class User do
>
>   def find_articles_for_user
>    Article.find(:all, :conditions => ['userid = ?', id)
>   end
>
> end
>
> Then you'd use a mock in your controller spec, and make sure you test that
> your method is being called.
>
> On the other hand, the user model should be tested directly against the
> db.
>
> HTH,
>
> Stefan
>
> 2007/12/3, Fischer, Daniel <daniel at helpmebuyacar.org>:
> >
> > Let's say you're using the restful_authentication plugin.
> > You have a model called articles. On the index action of the
> > articlescontroller you simply want to spec out that it'll scope the results
> > to the ownership of the current_user.
> >
> > It should NOT include any articles other than the articles that user
> > owns.
> >
> > How would you properly spec this out?
> >
> > Thanks for the help!
> >
> > _______________________________________________
> > rspec-users mailing list
> > rspec-users at rubyforge.org
> > http://rubyforge.org/mailman/listinfo/rspec-users
> >
>
>
>
> --
> Bekk Open Source
> http://boss.bekk.no
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://rubyforge.org/pipermail/rspec-users/attachments/20071203/cffdf875/attachment.html 


More information about the rspec-users mailing list