Does testing Rails 3 Scopes make sense?
Asked Answered
C

2

15

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?

Crouse answered 1/9, 2011 at 3:57 Comment(0)
A
3

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.

Anaheim answered 1/9, 2011 at 4:5 Comment(1)
I'd say you should not test the scope implementation, but behaviour. Here is the answer I'd link to.Woolard
E
17

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

Eugenle answered 6/11, 2011 at 14:13 Comment(0)
A
3

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.

Anaheim answered 1/9, 2011 at 4:5 Comment(1)
I'd say you should not test the scope implementation, but behaviour. Here is the answer I'd link to.Woolard

© 2022 - 2024 — McMap. All rights reserved.