David Chelimsky wrote:
On Mon, Jan 18, 2010 at 4:01 AM, Pat Maddox <mailingli...@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
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to