def parse_params_for_bulk_update(params)
attributes = (params || {}).reject {|k, v| v.blank?}
- attributes.keys.each {|k| attributes[k] = '' if attributes[k] == 'none'}
if custom = attributes[:custom_field_values]
custom.reject! {|k, v| v.blank?}
- custom.keys.each do |k|
+ end
+
+ replace_none_values_with_blank(attributes)
+ end
+
+ def replace_none_values_with_blank(params)
+ attributes = (params || {}))
+ attributes.each_key {|k| attributes[k] = '' if attributes[k] == 'none'}
+ if (custom = attributes[:custom_field_values])
+ custom.each_key do |k|
if custom[k].is_a?(Array)
custom[k] << '' if custom[k].delete('__none__')
else
return false
end
end
+ issue_attributes = replace_none_values_with_blank(issue_attributes)
@issue.safe_attributes = issue_attributes
@priorities = IssuePriority.active
@allowed_statuses = @issue.new_statuses_allowed_to(User.current)
assert_equal 2, issue.reload.assigned_to_id
end
+ def test_update_with_value_of_none_should_set_the_values_to_blank
+ @request.session[:user_id] = 2
+ issue = Issue.find(1)
+ issue.custom_field_values = {1 => 'MySQL'}
+ issue.assigned_to_id = 2
+ issue.save!
+
+ put(
+ :update,
+ params: {
+ id: issue.id,
+ issue: {
+ assigned_to_id: 'none',
+ category_id: 'none',
+ fixed_version_id: 'none',
+ custom_field_values: { 1 => '__none__' }
+ }
+ }
+ )
+
+ issue.reload
+ assert_nil issue.assigned_to
+ assert_nil issue.category
+ assert_nil issue.fixed_version
+ assert_equal '', issue.custom_field_value(1)
+ end
+
def test_get_bulk_edit
@request.session[:user_id] = 2
get(:bulk_edit, :params => {:ids => [1, 3]})