2014-04-04 7 views
5

Sto provando a verificare che Lead.new(params).active! genera un errore. Qual è il modo migliore per farlo?Come verificare che un metodo di azione enum convalidi l'oggetto prima della creazione o del salvataggio?

class Lead < ActiveRecord::Base 
    enum status: { stale: 0, active: 1, converted: 2 } 

    validate :existing_lead, on: :create 

    private 

    def existing_lead 
    if new_record? && (stale? || converted?) 
     errors.add(:status, "invalid for new leads") 
    end 
    end 
end 

so di poter impostare il valore enum manualmente e quindi testare valid? sull'oggetto che ho istanziare ma speravo ci fosse un modo per testare stale! e converted! che salvo al database quando viene chiamato.

+0

Credo che si intende che si desidera verificare che '' Lead.new.stale o '' Lead.new.converted sollevare errore, poiché quelli sono non validi per i nuovi lead. –

risposta

2

Si può fare quello che stai chiedendo in questo modo:!!

expect { Lead.new.stale! }.to raise_error(
    ActiveRecord::RecordInvalid, "Validation failed: Value invalid for new leads") 
Problemi correlati