Проверка того, что одна модель "принадлежит_ другой" - PullRequest
0 голосов
/ 21 марта 2012

У меня есть две модели - «Арендатор» и «Пользователь», у каждого арендатора будет «много пользователей», и я пытаюсь найти способ проверки того, что можно создать пользователя и автоматически назначить арендатора.При попытке запустить тест я получаю следующую ошибку:

NoMethodError:
  undefined method 'reflect_on_association' for Proc:Class

Код арендатора:

class Tenant < ActiveRecord::Base
attr_accessible :name, :billing_email, :country

validates :name,       :presence => true,
                       :length => { :maximum => 75 },
                       :uniqueness => true

validates :billing_email, :email => true

has_many :users
end

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

class User < ActiveRecord::Base
attr_accessible :email, :first_name, :last_name, :password, :tenant_id

validates :email,       :presence => true,
                        :uniqueness => true,
                        :email => true

validates :first_name,  :presence => true,
                        :length => { :maximum => 50 }

validates :last_name,   :presence => true,
                        :length => { :maximum => 50 }

validate :password_validation

has_many :sessions, :dependent => :destroy
belongs_to :tenant  

end

Попытка теста:

lambda do
  @attr = FactoryGirl.attributes_for(:user)
  post users_path, :user => @attr
  response.should be_success
end.should belong_to(:tenant)

1 Ответ

0 голосов
/ 22 марта 2012

Не совсем понятно, чего вы здесь добиваетесь.Утверждение, что один объект "принадлежит_ другому" пахнет плохо.Вы действительно заботитесь о том, чтобы принадлежал для этой ассоциацииСлишком часто кажется, что тесты rspec заканчивают тем, что дублировали тестируемый код, фактически не проверяя ничего полезного.

Скорее всего, вам интересно узнать, дает ли результат POSTing для вашего контроллера правильные результаты.Так как вы не показали нам свой контроллер, и, поскольку я считаю, что RSpec - это бессмысленный шум, вот как бы я справился с этим ..

assert_difference ->{User.count} do
  post: users_path, user: FactoryGirl.attributes_for(:user)
end
# Assuming your users table is cleared before each test..
assert_kind_of Tenant, User.first.tenant
...