[rspec-users] testing named_scope

Ben Mabey ben at benmabey.com
Sat Jan 23 19:29:13 EST 2010


David Chelimsky wrote:
> On Mon, Jan 18, 2010 at 4:01 AM, Pat Maddox <mailinglists at patmaddox.com> wrote:
>   
>> On Jan 17, 2010, at 6:17 PM, Nin wrote:
>>     
>>> Hi! I'm new to rspec and was wondering how named_scopes are usually
>>> tested? Is it enough to test that it's defined? or do you need to test
>>> the behavior as well? I've been reading around and this seems to be
>>> the tester's choice, i just want to get people's opinion on this :D
>>>       
>> class User < ActiveRecord::Base
>>  named_scope :admins, :conditions => {:admin => true}
>> end
>>
>> describe User, "admins" do
>>  it "should include users with admin flag" do
>>    admin = User.create! :admin => true
>>    User.admin.should include(admin)
>>  end
>>
>>  it "should not include users without admin flag" do
>>    admin = User.create! :admin => false
>>    User.admin.should_not include(admin)
>>  end
>> end
>>     
>
> Small style matter, but I've leaning towards more declarative sounding
> example names:
>
> 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
>
> We still have 'should' in the examples, but this produces more
> 'spec-like' output:
>
> User.admins
>   includes users with admin flag
>   excludes users without admin flag
>
> FWIW,
> David
>   

Another small style matter.. I like using the :: notation for class 
methods as that is what the documentation tools tend to use (RDoc and Yard):

describe User, "::admins" do
...
...
end


On the topic of RSpec as a form of documentation has anyone used the 
yard-doc rspec plugin?  It appears to be pretty limited ATM but seems 
very cool with a lot of potential.  Just like Ioke's docs it embeds the 
specs as part of the documentation with the option to view the source.  
Here is the example from the projects home page:

http://lsegal.github.com/yard-spec-plugin/String.html#pig_latin-instance_method

-Ben


More information about the rspec-users mailing list