[rspec-users] Need help mocking this out
Jarkko Laine
jarkko at jlaine.net
Mon Dec 3 05:42:46 EST 2007
On 3.12.2007, at 11.57, Fischer, Daniel wrote:
> 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.
Given that you have
user has_many :articles
You want to use current_user.articles (or
current_user.articles.find(*additional options*)).
In the spec, you want to make sure that the articles are scoped
through the correct user:
before(:each) do
@user = mock_model(User)
User.stub!(:find).and_return(@user) # to make sure current_user is
the mock model
@articles = [mock_model(Article)]
end
it "should find articles for the current user" do
@user.should_receive(:articles).and_return(@articles)
get :index
end
It is then the responsibility of the articles association to scope the
results. In the controller specs you just trust that it works.
--
Jarkko Laine
http://jlaine.net
http://dotherightthing.com
http://www.railsecommerce.com
http://odesign.fi
More information about the rspec-users
mailing list