В моем приложении я хочу иметь модель Car
.
Он будет иметь два поля среди других: 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
Придется делать это без матчи. Ну, не трагедия:)