Model Validation fails (correctly) in rails console but not in rspec

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

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

ivan:~/Development/ruby/IvanEnviromanRefinery [git:master+] → bundle

Loading development environment (Rails 3.0.9)
=> true
FILE)].each{|factory| require factory}
:body => “link text”,
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