Question

I'm a little torn. Do unit tests for Scopes in Rails 3 make sense?

On the one hand, I'm writing code and I should test that code.

However, on the other hand, basically all my scopes are effectively trivial. Checking one variable against a passed parameter is pretty much the most complex scope I have so far.

scope :author, proc { |author| where(:author_user_id => author }

That code is trivial and also more or less covered in the functions that actually USE the scopes.

What are the best practices for testing or not testing scopes?

Was it helpful?

Solution

If you think the scope is too simple to be tested, you can surely ignore it, but if you are thinking about testing scopes I'd tell you to look at this answer and focusing on testing behavior and not code itself.

OTHER TIPS

David Chelimsky (Rspec's creator) offered up the following example in the Rspec Google Group:

describe User, ".admins" do 
  it "includes users with admin flag" do 
    admin = User.create! :admin => true 
    User.admin.should include(admin) 
  end

  it "excludes users without admin flag" do 
    non_admin = User.create! :admin => false 
    User.admin.should_not include(non_admin) 
  end 
end

class User < ActiveRecord::Base 
  named_scope :admins, :conditions => {:admin => true} 
end 

It's obviously not the same example as yours, but it should give you an idea of how to do it. The relevant thread for context is here: http://groups.google.com/group/rspec/browse_thread/thread/6706c3f2cceef97f

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top