diff --git a/app/models/issue.rb b/app/models/issue.rb index 0029fffb9..8537ef699 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -525,10 +525,14 @@ class Issue < ActiveRecord::Base end def validate_issue - if self.due_date.nil? && @attributes['due_date'] && !@attributes['due_date'].empty? + if due_date.nil? && @attributes['due_date'].present? errors.add :due_date, :not_a_date end + if start_date.nil? && @attributes['start_date'].present? + errors.add :start_date, :not_a_date + end + if self.due_date and self.start_date and self.due_date < self.start_date errors.add :due_date, :greater_than_start_date end diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb index 39a09396f..ae6f9ee94 100644 --- a/test/unit/issue_test.rb +++ b/test/unit/issue_test.rb @@ -54,6 +54,24 @@ class IssueTest < ActiveSupport::TestCase assert_nil issue.estimated_hours end + def test_start_date_format_should_be_validated + set_language_if_valid 'en' + ['2012', 'ABC', '2012-15-20'].each do |invalid_date| + issue = Issue.new(:start_date => invalid_date) + assert !issue.valid? + assert_include 'Start date is not a valid date', issue.errors.full_messages, "No error found for invalid date #{invalid_date}" + end + end + + def test_due_date_format_should_be_validated + set_language_if_valid 'en' + ['2012', 'ABC', '2012-15-20'].each do |invalid_date| + issue = Issue.new(:due_date => invalid_date) + assert !issue.valid? + assert_include 'Due date is not a valid date', issue.errors.full_messages, "No error found for invalid date #{invalid_date}" + end + end + def test_create_with_required_custom_field set_language_if_valid 'en' field = IssueCustomField.find_by_name('Database')