私のアプリでは、Car
モデルが欲しいです。
特に2つのフィールドがあります:date_from
とdate_till
(誰かがそれを使用していた期間を指定するため)。
そして、date_fromがdate_till以下であることをモデルが検証するようにします。
私のmodel_spec.rbドラフトは次のようになります。
require 'spec_helper'
describe Car do
it {should validate_presence_of(:model)}
it {should validate_presence_of(:made)}
it "should have date_till only if it has date_from"
its "date_till should be >= date_from"
end
明らかに、date_tillをdate_fromよりも大きく設定しようとする「長い」テストを書くことができます。モデルは無効である必要があります。しかし、おそらくそれを行うためのいくつかのエレガントな方法がありますか?
では、(RSpecマッチャーを使用して)あるフィールドが別のフィールドより大きくないことをどのように検証できますか?
upd: @itsnikolayの答えを見て、次のようにコーディングしました。
it "should not allow date_till less than date_from" do
subject.date_from = Date.today
subject.date_till = Date.today - 1.day
subject.valid?.should be_false
end
マッチャーなしでそれをしなければなりませんでした。まあ、悲劇ではありません:)