From 0a773bcbb3ecc5ae82abeb4b409e6f3225e14190 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Thu, 13 Dec 2012 13:14:46 +0000 Subject: [PATCH] Fixed that validation fails when receiving an email with list custom fields (#12400). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10992 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/custom_field.rb | 8 +++++++- test/fixtures/mail_handler/ticket_with_custom_fields.eml | 1 + test/unit/custom_field_test.rb | 5 +++++ test/unit/mail_handler_test.rb | 4 ++-- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/models/custom_field.rb b/app/models/custom_field.rb index 9d40ebd7a..77441149f 100644 --- a/app/models/custom_field.rb +++ b/app/models/custom_field.rb @@ -160,7 +160,13 @@ class CustomField < ActiveRecord::Base possible_values_options = possible_values_options(customized) if possible_values_options.present? keyword = keyword.to_s.downcase - possible_values_options.detect {|text, id| text.downcase == keyword}.try(:last) + if v = possible_values_options.detect {|text, id| text.downcase == keyword} + if v.is_a?(Array) + v.last + else + v + end + end else keyword end diff --git a/test/fixtures/mail_handler/ticket_with_custom_fields.eml b/test/fixtures/mail_handler/ticket_with_custom_fields.eml index f3798a4b6..58dde7e0f 100644 --- a/test/fixtures/mail_handler/ticket_with_custom_fields.eml +++ b/test/fixtures/mail_handler/ticket_with_custom_fields.eml @@ -39,3 +39,4 @@ pulvinar dui, a gravida orci mi eget odio. Nunc a lacus. category: Stock management searchable field: Value for a custom field +Database: postgresql diff --git a/test/unit/custom_field_test.rb b/test/unit/custom_field_test.rb index d858045ed..c3e9962f2 100644 --- a/test/unit/custom_field_test.rb +++ b/test/unit/custom_field_test.rb @@ -218,4 +218,9 @@ class CustomFieldTest < ActiveSupport::TestCase assert_nil CustomField.new(:field_format => 'text').value_class assert_nil CustomField.new.value_class end + + def test_value_from_keyword_for_list_custom_field + field = CustomField.find(1) + assert_equal 'PostgreSQL', field.value_from_keyword('postgresql', Issue.find(1)) + end end diff --git a/test/unit/mail_handler_test.rb b/test/unit/mail_handler_test.rb index 798d3b592..92d007c36 100644 --- a/test/unit/mail_handler_test.rb +++ b/test/unit/mail_handler_test.rb @@ -177,8 +177,8 @@ class MailHandlerTest < ActiveSupport::TestCase assert !issue.new_record? issue.reload assert_equal 'New ticket with custom field values', issue.subject - assert_equal 'Value for a custom field', - issue.custom_value_for(CustomField.find_by_name('Searchable field')).value + assert_equal 'PostgreSQL', issue.custom_field_value(1) + assert_equal 'Value for a custom field', issue.custom_field_value(2) assert !issue.description.match(/^searchable field:/i) end -- 2.39.5