У меня есть класс пользователя с электронной почтой, которая уникальна, но привязана к клиенту:
class User < ActiveRecord::Base
validates :email, :uniqueness => {:scope => :tenant_id, :allow_blank => true}
#...
end
Я пытаюсь протестировать его с помощью:
class UserTest < ActiveSupport::TestCase
context "a user" do
setup { @user = create :user }
subject { @user }
should validate_uniqueness_of(:email).scoped_to(:tenant_id)
end
end
, но тест не удается с этим сообщением:
Ожидаемые ошибки включают «уже занято», когда для электронной почты установлено значение «joseph.allen_1@example.com», возникли ошибки: [«электронная почта уже занята ("joseph.allen_1@example.com")», «first_name не может быть пустым (nil)», «last_name не может быть пустым (нулевым)»] (с разным значением tenant_id)
, что вызывает много вопросов. Почему сообщение об ошибке не совпадает? Кажется, потому что фактический адрес электронной почты включен в сообщение об ошибке, но почему он включен? Когда я генерирую ошибку из пользовательского интерфейса, она, кажется, не включена:
Кроме того, в конце он говорит, что он пытается сделать это с другим клиентом, который, если он был истинным, он не должен генерировать какую-либо ошибку (это не так, когда я запускаю само приложение), но почему он ожидает ошибку? Следует ожидать ошибки только в том случае, если она совпадает tenant_id.
Это так запутанно. Есть идеи, что происходит и / или как правильно проверить это?