2014-04-04 13 views
5

Lead.new(params).active!'un bir hata verdiğini test etmeye çalışıyorum. Bu konuda gitmenin en iyi yolu nedir?Enum eylem yönteminin nesneyi oluşturmadan veya kaydetmeden önce doğruladığını nasıl test ederim?

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 

Ben örneğini nesne üzerinde valid? sınamak sonra elle enum değeri ve biliyorum ama ben çağrıldığında veritabanına kaydetmek stale! ve converted! test etmek için bir yol olduğunu umuyordum.

+0

' bir zam hata, bunlar yeni Leads için geçersiz olanlardır. –

cevap

2

Sen bu şekilde soruyorsun yapabilirsiniz:! Ben size Lead.new.stale `veya` Lead.new.converted `test etmek istediğiniz anlamına düşünüyorum

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