子属性の数を検証するカスタム アクションがあります。これを親のモデルに入れました:
class Location < ActiveRecord::Base
has_many :blacklisted
accepts_nested_attributes_for :blacklisted, :reject_if => lambda { |a| a[:mac].blank? }, :allow_destroy => true
...
validate :check_blacklisted_clients_count
private
def check_blacklisted_clients_count
if self.blacklisted.reject(&:marked_for_destruction?).count > 25
self.errors.add :base, "No more than 25 blacklisted clients allowed per location."
end
end
ブラウザから追加すると問題なく動作しますが、rspecでこれをテストしようとしていますが、失敗することはありません(または、どのように見ても合格です)。
it "should not allow 26 blacklisted macs", :focus => true do
loc = FactoryGirl.create(:location_full)
25.times do
loc.blacklisted.create(mac: '00:22:33:44:55:66')
end
loc.blacklisted.create(mac: '00:22:33:44:55:66')
puts loc.blacklisted.count
.........
end
(実際にはまだ何もテストしていないことはわかっています.25個しか作成されていないことを確認したかっただけです)。
これは、blacklisted.rb モデルに検証がないためだと思います。
rspec を取得してこの検証をテストするにはどうすればよいですか?