diff --git a/app/models/contract.rb b/app/models/contract.rb index 6275192..57e0e26 100644 --- a/app/models/contract.rb +++ b/app/models/contract.rb @@ -13,6 +13,7 @@ class Contract < ActiveRecord::Base validates_presence_of :end_date validates_presence_of :executed validates_inclusion_of :discount_type, :in => %w($ %), :allow_blank => true, :allow_nil => true + validate :start_and_end_date_are_valid # Accessors attr_accessible :name @@ -28,4 +29,9 @@ class Contract < ActiveRecord::Base attr_accessible :po_number attr_accessible :details + def start_and_end_date_are_valid + if start_date && end_date && end_date < start_date + errors.add :end_date, :greater_than_start_date + end + end end diff --git a/test/unit/contract_test.rb b/test/unit/contract_test.rb index 8532fe7..df9efcf 100644 --- a/test/unit/contract_test.rb +++ b/test/unit/contract_test.rb @@ -16,8 +16,13 @@ class ContractTest < ActiveSupport::TestCase should_allow_values_for :discount_type, "$", "%", nil, '' should_not_allow_values_for :discount_type, ["amount", "percent", "bar"] - context "start_date" do - should "be before end_date" + context "end_date" do + should "be after start_date" do + @contract = Contract.new(:start_date => Date.today, :end_date => Date.yesterday) + + assert @contract.invalid? + assert_equal "must be greater than start date", @contract.errors.on(:end_date) + end end should "QUESTION: name be unique"