@@ -118,7 +118,7 class CustomField < ActiveRecord::Base | |||
|
118 | 118 | values = read_attribute(:possible_values) |
|
119 | 119 | if values.is_a?(Array) |
|
120 | 120 | values.each do |value| |
|
121 | value.force_encoding('UTF-8') | |
|
121 | value.to_s.force_encoding('UTF-8') | |
|
122 | 122 | end |
|
123 | 123 | values |
|
124 | 124 | else |
@@ -129,7 +129,7 class CustomField < ActiveRecord::Base | |||
|
129 | 129 | # Makes possible_values accept a multiline string |
|
130 | 130 | def possible_values=(arg) |
|
131 | 131 | if arg.is_a?(Array) |
|
132 |
values = arg.compact. |
|
|
132 | values = arg.compact.map {|a| a.to_s.strip}.reject(&:blank?) | |
|
133 | 133 | write_attribute(:possible_values, values) |
|
134 | 134 | else |
|
135 | 135 | self.possible_values = arg.to_s.split(/[\n\r]+/) |
@@ -85,12 +85,26 class CustomFieldTest < ActiveSupport::TestCase | |||
|
85 | 85 | assert_equal ["One value"], field.possible_values |
|
86 | 86 | end |
|
87 | 87 | |
|
88 | def test_possible_values_should_stringify_values | |
|
89 | field = CustomField.new | |
|
90 | field.possible_values = [1, 2] | |
|
91 | assert_equal ["1", "2"], field.possible_values | |
|
92 | end | |
|
93 | ||
|
88 | 94 | def test_possible_values_should_accept_a_string |
|
89 | 95 | field = CustomField.new |
|
90 | 96 | field.possible_values = "One value" |
|
91 | 97 | assert_equal ["One value"], field.possible_values |
|
92 | 98 | end |
|
93 | 99 | |
|
100 | def test_possible_values_should_return_utf8_encoded_strings | |
|
101 | field = CustomField.new | |
|
102 | s = "Value".force_encoding('BINARY') | |
|
103 | field.possible_values = s | |
|
104 | assert_equal [s], field.possible_values | |
|
105 | assert_equal 'UTF-8', field.possible_values.first.encoding.name | |
|
106 | end | |
|
107 | ||
|
94 | 108 | def test_possible_values_should_accept_a_multiline_string |
|
95 | 109 | field = CustomField.new |
|
96 | 110 | field.possible_values = "One value\nAnd another one \r\n \n" |
General Comments 0
You need to be logged in to leave comments.
Login now