Ho una classe utente con una e-mail che è unico, ma come ambito l'inquilino:test unicità in un ambito in un progetto Rails utilizzando shoulda (ma non RSpec)
class User < ActiveRecord::Base
validates :email, :uniqueness => {:scope => :tenant_id, :allow_blank => true}
#...
end
sto cercando di testarlo 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
ma il test non riesce con questo messaggio:
errori dovrebbe includere "è già stata presa" quando e-mail è impostato su "[email protected] xample.com ", ha ottenuto errori: [" l'email è già stata presa (\ "[email protected] \") "," first_name non può essere vuoto (nil) "," last_name non può essere vuoto (nil) "] (con valore diverso di tenant_id)
che solleva molte domande. Perché il messaggio di errore non corrisponde? Sembra che il vero indirizzo email sia incluso nel messaggio di errore, ma perché è incluso? Quando ho generare l'errore dall'interfaccia utente non sembra essere inclusi:
Inoltre, alla fine mi dice che sta cercando con un inquilino diverso, che se fosse vero, si shouldn generare qualsiasi errore (non avviene quando eseguo l'app stessa), ma perché si aspetta l'errore? Dovrebbe aspettarsi l'errore solo se è lo stesso tenant_id.
Questo è così confuso. Qualche idea su cosa sta succedendo e/o su come testarlo correttamente?