tengo una clase de usuario con un correo electrónico que es único, pero como alcance el inquilino:singularidad de pruebas en un ámbito en un proyecto Rails usando la debería (pero no rspec)
class User < ActiveRecord::Base
validates :email, :uniqueness => {:scope => :tenant_id, :allow_blank => true}
#...
end
Estoy tratando de probarlo con:
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
pero la prueba falla con este mensaje:
errores espera que incluya "ya ha sido tomada" cuando el correo electrónico se establece en "[email protected] xample.com ", obtuve errores: [" el correo electrónico ya se ha tomado (\ "[email protected] \") "," first_name no puede estar en blanco (nil) "," last_name no puede estar en blanco (nil) "] (con diferente valor de tenant_id)
que genera muchas preguntas. ¿Por qué el mensaje de error no coincide? Parece que la dirección de correo electrónico real está incluida en el mensaje de error, pero ¿por qué está incluido? Cuando genero el error de la interfaz de usuario no parece que debe incluirse:
Además, al final se dice que está tratando con un inquilino diferente, que si era cierto, que shouldn No genero ningún error (no ocurre cuando ejecuto la aplicación en sí), pero, ¿por qué espera el error? Solo debería esperar el error si es el mismo tenant_id.
Esto es muy confuso. ¿Alguna idea de lo que está pasando y/o cómo probarla adecuadamente?