Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Defining FactoryGirl for User model of Devise fails

I've spent the last two hours figuring out what is wrong, but could not find the answer anywhere.

Its my first rails application (except Hartl's tutorial) so the solution might be simple.. I'm using Devise to manage my Users, everything is really ok with it up until now.

Trying to test the User model I defined a factory like this:

FactoryGirl.define do
  factory :user do
    email "[email protected]"
    password "123123"
    password_confirmation { "123123" }
  end
end

and the test is:

describe User do
#  pending "add some examples to (or delete) #{__FILE__}"

    @user = FactoryGirl.create(:user) 


    subject(:user)

    it { should respond_to(:email) }
    it { should respond_to(:password) }

    it { should be_valid }
end

But the last line ( it { should be_valid } ) fails the test.

I've printed the value of user/@user (tried both) and it came out nil. Edit: It's not nil. Its

#<User id: 13, email: "[email protected]", encrypted_password: "$2a$04$.lWs6yadJu/Ya67xi.W1F.fd6sWLGkzc/59.lgTi0sA7...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: "2012-08-27 15:48:23", updated_at: "2012-08-27 15:48:23">

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me
  # attr_accessible :title, :body

  validates :email, :presence => true
  validates :password, :presence => true
end

What is it that I don't see?

like image 256
AndPy Avatar asked Aug 27 '12 15:08

AndPy


1 Answers

OK, I finally found the problem. It turns out you have to restart "spork" when ever you make a change to the User model, because it preloads it.

like image 129
AndPy Avatar answered Oct 11 '22 04:10

AndPy