summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/issue.rb2
-rw-r--r--test/unit/issue_test.rb20
2 files changed, 21 insertions, 1 deletions
diff --git a/app/models/issue.rb b/app/models/issue.rb
index 492e98687..0f0cbf995 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -669,7 +669,7 @@ class Issue < ActiveRecord::Base
errors.add :base, v.custom_field.name + ' ' + l('activerecord.errors.messages.blank')
end
else
- if respond_to?(attribute) && send(attribute).blank?
+ if respond_to?(attribute) && send(attribute).blank? && !disabled_core_fields.include?(attribute)
errors.add attribute, :blank
end
end
diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb
index 46ae8bc51..decac145a 100644
--- a/test/unit/issue_test.rb
+++ b/test/unit/issue_test.rb
@@ -836,6 +836,26 @@ class IssueTest < ActiveSupport::TestCase
assert issue.save
end
+ def test_required_attribute_that_is_disabled_for_the_tracker_should_not_be_required
+ WorkflowPermission.delete_all
+ WorkflowPermission.create!(:old_status_id => 1, :tracker_id => 1,
+ :role_id => 1, :field_name => 'start_date',
+ :rule => 'required')
+ user = User.find(2)
+
+ issue = Issue.new(:project_id => 1, :tracker_id => 1, :status_id => 1,
+ :subject => 'Required fields', :author => user)
+ assert !issue.save
+ assert_include "Start date can't be blank", issue.errors.full_messages
+
+ tracker = Tracker.find(1)
+ tracker.core_fields -= %w(start_date)
+ tracker.save!
+ issue = Issue.new(:project_id => 1, :tracker_id => 1, :status_id => 1,
+ :subject => 'Required fields', :author => user)
+ assert issue.save
+ end
+
def test_required_attribute_names_for_multiple_roles_should_intersect_rules
WorkflowPermission.delete_all
WorkflowPermission.create!(:old_status_id => 1, :tracker_id => 1,