diff options
-rw-r--r-- | app/models/custom_field.rb | 4 | ||||
-rw-r--r-- | test/unit/custom_field_test.rb | 14 |
2 files changed, 16 insertions, 2 deletions
diff --git a/app/models/custom_field.rb b/app/models/custom_field.rb index 02d183397..3fbb1edc2 100644 --- a/app/models/custom_field.rb +++ b/app/models/custom_field.rb @@ -118,7 +118,7 @@ class CustomField < ActiveRecord::Base values = read_attribute(:possible_values) if values.is_a?(Array) values.each do |value| - value.force_encoding('UTF-8') + value.to_s.force_encoding('UTF-8') end values else @@ -129,7 +129,7 @@ class CustomField < ActiveRecord::Base # Makes possible_values accept a multiline string def possible_values=(arg) if arg.is_a?(Array) - values = arg.compact.collect(&:strip).select {|v| !v.blank?} + values = arg.compact.map {|a| a.to_s.strip}.reject(&:blank?) write_attribute(:possible_values, values) else self.possible_values = arg.to_s.split(/[\n\r]+/) diff --git a/test/unit/custom_field_test.rb b/test/unit/custom_field_test.rb index 815939d33..f40875137 100644 --- a/test/unit/custom_field_test.rb +++ b/test/unit/custom_field_test.rb @@ -85,12 +85,26 @@ class CustomFieldTest < ActiveSupport::TestCase assert_equal ["One value"], field.possible_values end + def test_possible_values_should_stringify_values + field = CustomField.new + field.possible_values = [1, 2] + assert_equal ["1", "2"], field.possible_values + end + def test_possible_values_should_accept_a_string field = CustomField.new field.possible_values = "One value" assert_equal ["One value"], field.possible_values end + def test_possible_values_should_return_utf8_encoded_strings + field = CustomField.new + s = "Value".force_encoding('BINARY') + field.possible_values = s + assert_equal [s], field.possible_values + assert_equal 'UTF-8', field.possible_values.first.encoding.name + end + def test_possible_values_should_accept_a_multiline_string field = CustomField.new field.possible_values = "One value\nAnd another one \r\n \n" |