[rspec-users] Model Validation fails (correctly) in rails console but not in rspec

David Chelimsky dchelimsky at gmail.com
Sat Jun 25 07:06:42 EDT 2011


On Jun 24, 2011, at 5:21 PM, ivanoats wrote:

> Hi, I have been really stuck on this problem. My validation for my
> model fails (like it should) when I'm testing it out in rails console,
> but my rspec example fails because it validates anyway (which it
> shouldn't).  What am I missing here or where should I start looking?
> 
> Thanks,
> Ivan
> 
> See below:
> 
> ivan:~/Development/ruby/IvanEnviromanRefinery [git:master+]  → bundle
> exec rspec ../refinerycms-link/
> .............................F.
> 
> Failures:
> 
>  1) BlogPost bookmark links must have a link url if it is a link
>     Failure/Error: Factory.build(:post,
>       expected valid? to return false, got true
>     # /Users/ivan/Development/ruby/refinerycms-link/spec/models/
> blog_post_spec.rb:197:in `block (3 levels) in <top (required)>'
> 
> Finished in 6.56 seconds
> 31 examples, 1 failure
> 
> Failed examples:
> 
> rspec /Users/ivan/Development/ruby/refinerycms-link/spec/models/
> blog_post_spec.rb:196 # BlogPost bookmark links must have a link url
> if it is a link
> ivan:~/Development/ruby/IvanEnviromanRefinery [git:master+]  → rails
> console
> Loading development environment (Rails 3.0.9)
> ruby-1.9.2-p180 :001 > b = BlogPost.new
> => #<BlogPost id: nil, title: nil, body: nil, draft: nil,
> published_at: nil, created_at: nil, updated_at: nil, user_id: nil,
> cached_slug: nil, custom_url: nil, link_url: nil, is_link: nil,
> custom_teaser: nil>
> ruby-1.9.2-p180 :002 > b.title=' 2011-06-24 8:34 '
> => " 2011-06-24 8:34 "
> ruby-1.9.2-p180 :003 > b.body='goo'
> => "goo"
> ruby-1.9.2-p180 :004 > b.is_link = true
> => true
> ruby-1.9.2-p180 :005 > b.valid?
> => false
> ruby-1.9.2-p180 :007 > b.save
> => false
> ruby-1.9.2-p180 :008 > b.errors
> => {:link_url=>["must have a link_url if is_link is true"]}
> ruby-1.9.2-p180 :009 >
> 
> require 'spec_helper'
> Dir[File.expand_path('../../../features/support/factories/*.rb',
> __FILE__)].each{|factory| require factory}
> 
> describe BlogPost do
>  let(:blog_post ) { Factory :post }
> 
>  ...
> 
>    describe "bookmark links" do
>      it "may have a bookmark link" do
>       Factory.build(:post,
>                    :title => "a link",
>                    :body => "link text",
>                    :is_link => true,
>                    :link_url => "http://example.com").should be_valid
>       end
>      it "must have a link url if it is a link" do
>        Factory.build(:post,
>                             :title => "a link",
>                             :body => "link text",
>                             :is_link => true).should_not be_valid
>      end
>    end
> end

I'm guessing the factory is set up to include a link_url. If so, just set :link_url => nil in the second example. If not, I have no idea.

HTH,
David





More information about the rspec-users mailing list