casted
end
+ def value_from_keyword(keyword, customized)
+ 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)
+ else
+ keyword
+ end
+ end
+
# Returns a ORDER BY clause that can used to sort customized
# objects by their value of the custom field.
# Returns nil if the custom field can not be used for sorting.
# Returns a Hash of issue custom field values extracted from keywords in the email body
def custom_field_values_from_keywords(customized)
customized.custom_field_values.inject({}) do |h, v|
- if value = get_keyword(v.custom_field.name, :override => true)
- h[v.custom_field.id.to_s] = value
+ if keyword = get_keyword(v.custom_field.name, :override => true)
+ h[v.custom_field.id.to_s] = v.custom_field.value_from_keyword(keyword, customized)
end
h
end
assert !issue.description.match(/^searchable field:/i)
end
+ def test_add_issue_with_version_custom_fields
+ field = IssueCustomField.create!(:name => 'Affected version', :field_format => 'version', :is_for_all => true, :tracker_ids => [1,2,3])
+
+ issue = submit_email('ticket_with_custom_fields.eml', :issue => {:project => 'ecookbook'}) do |email|
+ email << "Affected version: 1.0\n"
+ end
+ assert issue.is_a?(Issue)
+ assert !issue.new_record?
+ issue.reload
+ assert_equal '2', issue.custom_field_value(field)
+ end
+
def test_add_issue_with_cc
issue = submit_email('ticket_with_cc.eml', :issue => {:project => 'ecookbook'})
assert issue.is_a?(Issue)