@@ -241,9 +241,7 class CustomField < ActiveRecord::Base | |||||
241 | errs << ::I18n.t('activerecord.errors.messages.blank') |
|
241 | errs << ::I18n.t('activerecord.errors.messages.blank') | |
242 | end |
|
242 | end | |
243 | end |
|
243 | end | |
244 | if custom_value.value.present? |
|
244 | errs += format.validate_custom_value(custom_value) | |
245 | errs += format.validate_custom_value(custom_value) |
|
|||
246 | end |
|
|||
247 | errs |
|
245 | errs | |
248 | end |
|
246 | end | |
249 |
|
247 |
@@ -131,7 +131,8 module Redmine | |||||
131 | # Returns the validation error messages for custom_value |
|
131 | # Returns the validation error messages for custom_value | |
132 | # Should return an empty array if custom_value is valid |
|
132 | # Should return an empty array if custom_value is valid | |
133 | def validate_custom_value(custom_value) |
|
133 | def validate_custom_value(custom_value) | |
134 |
e |
|
134 | values = Array.wrap(custom_value.value).reject {|value| value.to_s == ''} | |
|
135 | errors = values.map do |value| | |||
135 | validate_single_value(custom_value.custom_field, value, custom_value.customized) |
|
136 | validate_single_value(custom_value.custom_field, value, custom_value.customized) | |
136 | end |
|
137 | end | |
137 | errors.flatten.uniq |
|
138 | errors.flatten.uniq | |
@@ -252,16 +253,15 module Redmine | |||||
252 | class Unbounded < Base |
|
253 | class Unbounded < Base | |
253 | def validate_single_value(custom_field, value, customized=nil) |
|
254 | def validate_single_value(custom_field, value, customized=nil) | |
254 | errs = super |
|
255 | errs = super | |
255 |
|
|
256 | value = value.to_s | |
256 |
|
|
257 | unless custom_field.regexp.blank? or value =~ Regexp.new(custom_field.regexp) | |
257 |
|
|
258 | errs << ::I18n.t('activerecord.errors.messages.invalid') | |
258 |
|
|
259 | end | |
259 |
|
|
260 | if custom_field.min_length && value.length < custom_field.min_length | |
260 |
|
|
261 | errs << ::I18n.t('activerecord.errors.messages.too_short', :count => custom_field.min_length) | |
261 |
|
|
262 | end | |
262 |
|
|
263 | if custom_field.max_length && custom_field.max_length > 0 && value.length > custom_field.max_length | |
263 |
|
|
264 | errs << ::I18n.t('activerecord.errors.messages.too_long', :count => custom_field.max_length) | |
264 | end |
|
|||
265 | end |
|
265 | end | |
266 | errs |
|
266 | errs | |
267 | end |
|
267 | end | |
@@ -528,8 +528,9 module Redmine | |||||
528 | end |
|
528 | end | |
529 |
|
529 | |||
530 | def validate_custom_value(custom_value) |
|
530 | def validate_custom_value(custom_value) | |
531 | invalid_values = Array.wrap(custom_value.value) - Array.wrap(custom_value.value_was) - custom_value.custom_field.possible_values |
|
531 | values = Array.wrap(custom_value.value).reject {|value| value.to_s == ''} | |
532 | if invalid_values.select(&:present?).any? |
|
532 | invalid_values = values - Array.wrap(custom_value.value_was) - custom_value.custom_field.possible_values | |
|
533 | if invalid_values.any? | |||
533 | [::I18n.t('activerecord.errors.messages.inclusion')] |
|
534 | [::I18n.t('activerecord.errors.messages.inclusion')] | |
534 | else |
|
535 | else | |
535 | [] |
|
536 | [] |
@@ -146,6 +146,7 class CustomFieldTest < ActiveSupport::TestCase | |||||
146 |
|
146 | |||
147 | assert f.valid_field_value?(nil) |
|
147 | assert f.valid_field_value?(nil) | |
148 | assert f.valid_field_value?('') |
|
148 | assert f.valid_field_value?('') | |
|
149 | assert !f.valid_field_value?(' ') | |||
149 | assert f.valid_field_value?('a' * 2) |
|
150 | assert f.valid_field_value?('a' * 2) | |
150 | assert !f.valid_field_value?('a') |
|
151 | assert !f.valid_field_value?('a') | |
151 | assert !f.valid_field_value?('a' * 6) |
|
152 | assert !f.valid_field_value?('a' * 6) | |
@@ -156,6 +157,7 class CustomFieldTest < ActiveSupport::TestCase | |||||
156 |
|
157 | |||
157 | assert f.valid_field_value?(nil) |
|
158 | assert f.valid_field_value?(nil) | |
158 | assert f.valid_field_value?('') |
|
159 | assert f.valid_field_value?('') | |
|
160 | assert !f.valid_field_value?(' ') | |||
159 | assert f.valid_field_value?('ABC') |
|
161 | assert f.valid_field_value?('ABC') | |
160 | assert !f.valid_field_value?('abc') |
|
162 | assert !f.valid_field_value?('abc') | |
161 | end |
|
163 | end | |
@@ -165,6 +167,7 class CustomFieldTest < ActiveSupport::TestCase | |||||
165 |
|
167 | |||
166 | assert f.valid_field_value?(nil) |
|
168 | assert f.valid_field_value?(nil) | |
167 | assert f.valid_field_value?('') |
|
169 | assert f.valid_field_value?('') | |
|
170 | assert !f.valid_field_value?(' ') | |||
168 | assert f.valid_field_value?('1975-07-14') |
|
171 | assert f.valid_field_value?('1975-07-14') | |
169 | assert !f.valid_field_value?('1975-07-33') |
|
172 | assert !f.valid_field_value?('1975-07-33') | |
170 | assert !f.valid_field_value?('abc') |
|
173 | assert !f.valid_field_value?('abc') | |
@@ -175,6 +178,7 class CustomFieldTest < ActiveSupport::TestCase | |||||
175 |
|
178 | |||
176 | assert f.valid_field_value?(nil) |
|
179 | assert f.valid_field_value?(nil) | |
177 | assert f.valid_field_value?('') |
|
180 | assert f.valid_field_value?('') | |
|
181 | assert !f.valid_field_value?(' ') | |||
178 | assert f.valid_field_value?('value2') |
|
182 | assert f.valid_field_value?('value2') | |
179 | assert !f.valid_field_value?('abc') |
|
183 | assert !f.valid_field_value?('abc') | |
180 | end |
|
184 | end | |
@@ -184,6 +188,7 class CustomFieldTest < ActiveSupport::TestCase | |||||
184 |
|
188 | |||
185 | assert f.valid_field_value?(nil) |
|
189 | assert f.valid_field_value?(nil) | |
186 | assert f.valid_field_value?('') |
|
190 | assert f.valid_field_value?('') | |
|
191 | assert !f.valid_field_value?(' ') | |||
187 | assert f.valid_field_value?('123') |
|
192 | assert f.valid_field_value?('123') | |
188 | assert f.valid_field_value?('+123') |
|
193 | assert f.valid_field_value?('+123') | |
189 | assert f.valid_field_value?('-123') |
|
194 | assert f.valid_field_value?('-123') | |
@@ -195,6 +200,7 class CustomFieldTest < ActiveSupport::TestCase | |||||
195 |
|
200 | |||
196 | assert f.valid_field_value?(nil) |
|
201 | assert f.valid_field_value?(nil) | |
197 | assert f.valid_field_value?('') |
|
202 | assert f.valid_field_value?('') | |
|
203 | assert !f.valid_field_value?(' ') | |||
198 | assert f.valid_field_value?('11.2') |
|
204 | assert f.valid_field_value?('11.2') | |
199 | assert f.valid_field_value?('-6.250') |
|
205 | assert f.valid_field_value?('-6.250') | |
200 | assert f.valid_field_value?('5') |
|
206 | assert f.valid_field_value?('5') | |
@@ -206,9 +212,11 class CustomFieldTest < ActiveSupport::TestCase | |||||
206 |
|
212 | |||
207 | assert f.valid_field_value?(nil) |
|
213 | assert f.valid_field_value?(nil) | |
208 | assert f.valid_field_value?('') |
|
214 | assert f.valid_field_value?('') | |
|
215 | assert !f.valid_field_value?(' ') | |||
209 | assert f.valid_field_value?([]) |
|
216 | assert f.valid_field_value?([]) | |
210 | assert f.valid_field_value?([nil]) |
|
217 | assert f.valid_field_value?([nil]) | |
211 | assert f.valid_field_value?(['']) |
|
218 | assert f.valid_field_value?(['']) | |
|
219 | assert !f.valid_field_value?([' ']) | |||
212 |
|
220 | |||
213 | assert f.valid_field_value?('value2') |
|
221 | assert f.valid_field_value?('value2') | |
214 | assert !f.valid_field_value?('abc') |
|
222 | assert !f.valid_field_value?('abc') |
General Comments 0
You need to be logged in to leave comments.
Login now