Тест с макросом musta завершается ошибкой - PullRequest
0 голосов
/ 19 июня 2010

У меня есть модель:

class Company < ActiveRecord::Base
  attr_accessible :name, :address, :description, :email, :www   
  validates_presence_of :name, :address, :email
  validates_uniqueness_of :user, :name, :email
  validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, :on => :create
  has_many :items, :dependent => :destroy
  has_one :user  
end

И тест-кейс:

class CompanyTest < ActiveSupport::TestCase
  should_allow_mass_assignment_of :name, :address, :description, :email, :www
  should_have_one :user
  should_have_many :items, :dependent => :destroy
  should_validate_uniqueness_of :name, :email  #failed
  should_validate_presence_of :name, :address, :email  #failed
  should_not_allow_values_for :email, "not valid email"  #failed
  should_allow_values_for :email, "test@test.com"  #failed
end

Некоторые сгенерированные тесты не выполняются со странной ошибкой:

ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: companies.user: SELECT "companies".id FROM "companies" WHERE ("companies"."user" IS NULL)  LIMIT 1

Я не могу понять, почему он пытался получить доступ к столбцу "пользователь" таблицы компании. Он не существует, потому что пользовательская модель содержит «ведомый_компании» и столбец «фирменный_идентификатор»

Ответы [ 2 ]

0 голосов
/ 20 июня 2010

Неправильная проверка:

validates_uniqueness_of :user

без этой строки все ок!

0 голосов
/ 20 июня 2010

Afaik has_one ожидает, что исходная таблица определит столбец ratio_id. В вашем случае я предполагаю, что таблица companies хранит столбец user_id. Таким образом, вы должны изменить определение has_one, чтобы указать направление и внешний ключ, или изменить его на own_to.

...