Volte
Volte

Reputation: 1905

FactoryGirl doesn't write data

I am so confused as to why this is happening...

I'm using factory girl, and this factory:

# spec/factories/partners/contact.rb

FactoryGirl.define do
  factory :partner_contact, class: Partners::Contact do
    first_name "Josh"
    last_name { Faker::Name.last_name }
    email { Faker::Internet.email }
    partner
  end
end

But when I run my rspec it says

Mysql2::Error: Field 'first_name' doesn't have a default value: INSERT INTO `partner_contact` (`created_on`) VALUES ('2014-01-30 22:21:53')

Here is the spec that I'm using that generates the above error.

# spec/models/contact.rb
require 'spec_helper'
require 'pp'

describe Partners::Contact do

    it "has a valid factory" do
        partner = FactoryGirl.create(:partner_contact)
#       partner.should be_valid
        puts "MEOW MEOW"
    end

    it "is invalid without a firstname" do
#       FactoryGirl.build(:partner_contact, first_name: nil).should_not be_valid
    end

    it "is invalid without a lastname" do
#       FactoryGirl.build(:partner_contact, last_name: nil).should_not be_valid
    end

    it "is invalid without an email address" do
#       FactoryGirl.build(:partner_contact, email: nil).should_not be_valid
    end

    #it "returns a contact's fullname as a string"


end

As you can see, it's not trying to commit any data that I listed, first_name, last_name or email. Just 'created_on' which is generated via rails.

What's going on here?

Upvotes: 1

Views: 415

Answers (2)

Joe Ferris
Joe Ferris

Reputation: 2732

Do you have any fixtures for that table? If fixtures are present and enabled, Rails will attempt to load them into your database before your test is evaluated. Look in spec/fixtures.

Upvotes: 1

khelll
khelll

Reputation: 24000

Your setup seems wrong. Check the FactoryGirl Rails gem. Don't forget to configure RSpec to use FactoryGirl as well.

Upvotes: 0

Related Questions