У меня есть некоторые проблемы при спецификации валидации моей модели, которая действует как конечный автомат (gem state_machine 0.9.4). С помощью stat_machine я определил проверку для велосипедов в состоянии доставки:
state :delivered do
validates_presence_of :shipping_number
end
в моих спецификациях это работает правильно:
it "may not transit to :delivered without a shipping number " do
@bike.state = 'delivered'
@bike.shipping_number = nil
@bike.save
@bike.should have(1).error_on(:shipping_number)
end
но при спецификации так:
it "may not transit to :delivered without a shipping number " do
@bike.shipping_number = nil
@bike.deliver
@bike.should have(1).error_on(:shipping_number)
end
Я получаю:
expected 1 error on :shipping_number, got 0
хотя
it "may not transit to :delivered without a shipping number " do
@bike.shipping_number = nil
@bike.deliver
raise @bike.errors.inspect
end
показывает мне:
Failure/Error: raise @bike.errors.inspect
#<OrderedHash {:shipping_number=>["can't be blank"]}>
Может кто-нибудь объяснить это?