On 9 Dec 2009, at 19:16, Wincent Colaiuta wrote:

El 09/12/2009, a las 19:15, David Chelimsky escribió:

On Wed, Dec 9, 2009 at 11:55 AM, Pat Maddox <mailingli...@patmaddox.com > wrote:
[...@admin, @allowed_user].should all(be_allowed_to_visit(url))
[...@admin, @allowed_user].should all_be_allowed_to_visit(url)

On Dec 9, 2009, at 5:27 AM, David Chelimsky wrote:

On Wed, Dec 9, 2009 at 5:41 AM, Rodrigo Rosenfeld Rosas
<lboc...@yahoo.com.br> wrote:

I was thinking that it would be great to add 2 additional methods to
Object: should_all and should_none.

The idea is that we would be able to write tests like:

[...@admin, @allowed_user].should_all be_allowed_to_visit(url)

[...@unprivileged, @non_welcome].should_none be_allowed_to_visit(url)

Implementation is trivial, but I think that tests would become much
cleaner than:

[...@admin, @allowed_user].each{|u| u.should be_allowed_to_visit(url)}

Any thoughts on that?

How about:
each_of(@admin, @allowed_user).should be_allowed_to_visit(url)
none_of(@admin, @allowed_user).should be_allowed_to_visit(url)
This gets the cleanliness without adding to Object.

I'm puzzled as to why people are so focussed on making specs read like plain text English when they are still developer-facing Ruby code.

Especially suprised in this case of wanting to avoid the "each + block" enumeration idiom, which is about as "bread and butter" Ruby as you can get, readable to anybody who's ever read the first chapter of a Ruby book.

+1

Personally I'd use Cucumber for testing this sort of behaviour, but if I was using RSpec for some reason, I'd be inclined to use macros so I got a separate failing example for each type of user:

url = 'http://some/url'
[:admin, :allowed_user].each do |user_type|
  it "should allow an #{user_type} to visit #{url}" do
    user = instance_variable_get("@#{user_type}.to_sym)
    user.should be_allowed_to_visit(url)
  end
end

Either that or just simply a separate nested describe block for each type of user:

describe "an admin user" do
  before(:each) do
     @user = Factory(:user, :admin => true)
  end

  it "should be allowed to access the URL"
end

etc.


cheers,
Matt

http://mattwynne.net
+447974 430184

_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to