i have a person object. Persons don't need to have addresses, but if they have any address field value, they must have them all. So I have something like this:
validates_presence_of :street_address, :city, :state, :postal_code unless :address_blank?
address_blank? checks whether all of the address fields are blank.
If I run a test like this, it works:
describe "given attributes" do before(:each) do @valid_attributes = { :first_name => "Jonny", :middle_name => "D", :last_name => "Miller", :street_address => "123 This Street", :street_address2 => "Suite 200", :city => "Baltimore", :state => "MD", :postal_code => "23993", :salutation => "Mr.", :home_phone => "373-333-9999", :cell_phone => "373-444-5555" } end it "given attributes containing valid address values, address_blank? should return false" do it = Person.new(@valid_attributes) it.address_blank?.should == false end
However, if I do the following,
it "must have a street_address" do @valid_attributes[:street_address] = "" it = Person.new(@valid_attributes) it.save it.errors.on(:street_address).should == "can't be blank" end
I get the following result.
'Person must have a street_address' FAILED expected: "can't be blank", got: nil (using ==)
So it appears that :address_blank? in the validates_presence_of is evaluating to true.
Can anyone give me an idea of how I can detect why this is so?
I apologize in advance if this should be an rspec question, and will take it there if advised as such.
best, Tom