diff --git a/app/models/version.rb b/app/models/version.rb index d0fe02973..16db9f05c 100644 --- a/app/models/version.rb +++ b/app/models/version.rb @@ -33,6 +33,7 @@ class Version < ActiveRecord::Base validates_format_of :effective_date, :with => /^\d{4}-\d{2}-\d{2}$/, :message => :not_a_date, :allow_nil => true validates_inclusion_of :status, :in => VERSION_STATUSES validates_inclusion_of :sharing, :in => VERSION_SHARINGS + validate :validate_version scope :named, lambda {|arg| { :conditions => ["LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip]}} scope :open, :conditions => {:status => 'open'} @@ -275,4 +276,10 @@ class Version < ActiveRecord::Base progress end end + + def validate_version + if effective_date.nil? && @attributes['effective_date'].present? + errors.add :effective_date, :not_a_date + end + end end diff --git a/test/unit/version_test.rb b/test/unit/version_test.rb index 034fa5668..807ff32b7 100644 --- a/test/unit/version_test.rb +++ b/test/unit/version_test.rb @@ -32,7 +32,13 @@ class VersionTest < ActiveSupport::TestCase def test_invalid_effective_date_validation v = Version.new(:project => Project.find(1), :name => '1.1', :effective_date => '99999-01-01') - assert !v.save + assert !v.valid? + v.effective_date = '2012-11-33' + assert !v.valid? + v.effective_date = '2012-31-11' + assert !v.valid? + v.effective_date = 'ABC' + assert !v.valid? assert_include I18n.translate('activerecord.errors.messages.not_a_date'), v.errors[:effective_date] end