Модель проходит проверку: Наличие => Истина и все еще ноль в базе данных - PullRequest
0 голосов
/ 14 сентября 2011

user_type - это столбец в пользовательской модели, и он должен быть :sence => true. Он отклоняет в rspec при передаче nil в user_type. Однако factory_girl может сохранить nil user_type в поле с помощью sqlite3.

Ходовые рельсы 3.1.0. rspec 2.6.0 и factory_girl 2.1.0

// модель пользователя:

  validates :user_type,  :presence => true  

// Определение фабричной девушки:

Factory.define :user do |user|

  user.name                  "Test User"
  user.email                 "test@test.com"
  user.password              "password1"
  user.password_confirmation "password1"
  user.status                "active"
  user.user_type             "employee"

end

Factory.define :user_level do |level|

  level.role                 "sales"
  level.position             "member"
  level.team                 1
  level.association          :user
end

// rspec case: пройдено

  it "should reject user type nil" do
    user = Factory.build(:user, :user_type => nil)
    user.should_not be_valid  
  end

  it "should take user type 'employee'" do
    user = Factory.build(:user, :user_type => 'employee')
    user.errors[:user_type].should be_empty
    user.should be_valid
  end

Есть мысли? Благодарю.

1 Ответ

2 голосов
/ 14 сентября 2011

Как отметил Майкл Хартл в своем превосходном руководстве по Rails , Factory Girl обходит attr_accessible в модели.Например, вы можете перезаписать «магические» столбцы, используя Factory Girl.Возможно, это относится и к валидации?

Кажется, что в этом случае было бы лучше создать пользователя с User.new, так как вы тестируете сам процесс создания и валидации.

...