On 2010-08-11 12:29 PM, Craig Demyanovich wrote:
On Wed, Aug 11, 2010 at 12:53 PM, Nadal <node.j...@gmail.com <mailto:node.j...@gmail.com>> wrote:

    I posted a question on shoulda forum. It is under moderation so I
    don't have a link yet.

    To the people who do not use shoulda: How would you write a test for
    above case. I assume it would require set up a subject, set nil value,
    and then see if there is an error message. I still think that for such
    cases should macro is succint and does it job well unless I am missing
    some new feature of rspec2.


I don't yet use RSpec 2, but I don't think you're missing anything. Shoulda may very well be a good fit for these kinds of examples.

Since you asked, here's how I currently write examples like the ones you posted.

require 'spec_helper'

describe User, "being valid" do
  it "requires an email" do
    user = User.new(:email => nil)
    user.should_not be_valid
    user.should have(1).error_on(:email)
  end
  it "requires a name" do
    user = User.new(:name => nil)
    user.should_not be_valid
    user.should have(1).error_on(:name)
  end
end

Regards,
Craig

That's exactly what I used to do, also, until I switched to Remarkable. Now it's:

        before :each do
            @user = User.create(valid_user_hash)
        end

        should_validate_presence_of :first_name
        should_validate_presence_of :last_name
        should_validate_presence_of :email
        should_validate_uniqueness_of :email, :case_sensitive => false
        should_validate_format_of_email

One thing I have come to appreciate about this is being able to copy the should_* statements to my model and, using TextMate's column editing mode, remove the 'should_' and add an 's' at the end of 'validate' and I'm done. For all of the validations that Remarkable supports, the same options are supported as well. That's actually why I switch from Shoulda to Remarkable a year or so ago (things might have changed in Shoulda by now, though): Not all validation options were supported in Shoulda.

Peace,
Phillip

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

Reply via email to