summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config/initializers/10-patches.rb30
-rw-r--r--test/unit/issue_test.rb13
2 files changed, 43 insertions, 0 deletions
diff --git a/config/initializers/10-patches.rb b/config/initializers/10-patches.rb
index 5d19a6fc0..f4ae06cd6 100644
--- a/config/initializers/10-patches.rb
+++ b/config/initializers/10-patches.rb
@@ -12,6 +12,36 @@ module ActiveRecord
end
end
+module ActiveRecord
+ class Errors
+ def full_messages(options = {})
+ full_messages = []
+
+ @errors.each_key do |attr|
+ @errors[attr].each do |message|
+ next unless message
+
+ if attr == "base"
+ full_messages << message
+ elsif attr == "custom_values"
+ # Replace the generic "custom values is invalid"
+ # with the errors on custom values
+ @base.custom_values.each do |value|
+ value.errors.each do |attr, msg|
+ full_messages << value.custom_field.name + ' ' + msg
+ end
+ end
+ else
+ attr_name = @base.class.human_attribute_name(attr)
+ full_messages << attr_name + ' ' + message
+ end
+ end
+ end
+ full_messages
+ end
+ end
+end
+
module ActionView
module Helpers
module DateHelper
diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb
index 7013d2c0d..365316034 100644
--- a/test/unit/issue_test.rb
+++ b/test/unit/issue_test.rb
@@ -63,6 +63,19 @@ class IssueTest < Test::Unit::TestCase
assert_equal 'PostgreSQL', issue.custom_value_for(field).value
end
+ def test_errors_full_messages_should_include_custom_fields_errors
+ field = IssueCustomField.find_by_name('Database')
+
+ issue = Issue.new(:project_id => 1, :tracker_id => 1, :author_id => 1, :status_id => 1, :subject => 'test_create', :description => 'IssueTest#test_create_with_required_custom_field')
+ assert issue.available_custom_fields.include?(field)
+ # Invalid value
+ issue.custom_field_values = { field.id => 'SQLServer' }
+
+ assert !issue.valid?
+ assert_equal 1, issue.errors.full_messages.size
+ assert_equal "Database #{I18n.translate('activerecord.errors.messages.inclusion')}", issue.errors.full_messages.first
+ end
+
def test_update_issue_with_required_custom_field
field = IssueCustomField.find_by_name('Database')
field.update_attribute(:is_required, true)