Подтвердить что ты не робот

В RSpec - как я могу проверить, если один атрибут меньше (или больше), чем другой

В моем приложении я хочу иметь модель 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

Придется делать это без матчи. Ну, не трагедия:)

4b9b3361

Ответ 2

Просто используйте <=

date_from.should be <= date_till

Ответ 4

Или в новом синтаксисе

expect(date_from).to be <= date_till