[rspec-users] specs for attributes with default values on the SQL layer

Pat Maddox pat.maddox at gmail.com
Thu Apr 16 17:07:12 EDT 2009


On Thu, Apr 16, 2009 at 1:15 PM, svoop <svoop at delirium.ch> wrote:
>> What do you mean by it blocks refactorings?  This isn't any different
>> from the first example, with the exception that you provide a value
>> instead of letting the default kick in...
>
> article = Article.new
> article.fetched   # => false (due to default)
>
> article = Article.new(valid_attributes.except(:fetched))
> article.fetched   # => false (again due to default)
> article.should have(1).error_on(:fetched)   # => RED LIGHT
>
> This would work:
>
> article = Article.new(:fetched => nil)
> article.fetched   # => nil (default overridden)
> article.should have(1).error_on(:fetched)   # => GREEN LIGHT
>
> The problem is that Article.new doesn't return an object where all attributes
> are nil and therefore the attributes passed must set defaultet attributes
> explicitly to nil for it to override the defaults.
>
> I wonder how other people treat this case.

Okay I must be dense because I'm not sure what you mean by it gets in
the way of refactoring.

And you're right about how it behaves...that's exactly how default
attrs work.  If you want to test that your model doesn't allow invalid
data, you have to explicitly give it invalid data.

Could you rephrase the problem perhaps?  Or wait for someone smarter
to come along.

Pat


More information about the rspec-users mailing list