summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/version.rb7
-rw-r--r--test/unit/version_test.rb8
2 files changed, 14 insertions, 1 deletions
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