mirror of
https://github.com/redmine/redmine.git
synced 2025-11-08 14:26:04 +01:00
New custom fields of existing issues are not initialized with their default value (#21074).
git-svn-id: http://svn.redmine.org/redmine/trunk@14773 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -22,7 +22,7 @@ class CustomValue < ActiveRecord::Base
|
|||||||
|
|
||||||
def initialize(attributes=nil, *args)
|
def initialize(attributes=nil, *args)
|
||||||
super
|
super
|
||||||
if new_record? && custom_field && (customized_type.blank? || (customized && customized.new_record?))
|
if new_record? && custom_field && !attributes.key?(:value)
|
||||||
self.value ||= custom_field.default_value
|
self.value ||= custom_field.default_value
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -92,12 +92,12 @@ module Redmine
|
|||||||
if field.multiple?
|
if field.multiple?
|
||||||
values = custom_values.select { |v| v.custom_field == field }
|
values = custom_values.select { |v| v.custom_field == field }
|
||||||
if values.empty?
|
if values.empty?
|
||||||
values << custom_values.build(:customized => self, :custom_field => field, :value => nil)
|
values << custom_values.build(:customized => self, :custom_field => field)
|
||||||
end
|
end
|
||||||
x.value = values.map(&:value)
|
x.value = values.map(&:value)
|
||||||
else
|
else
|
||||||
cv = custom_values.detect { |v| v.custom_field == field }
|
cv = custom_values.detect { |v| v.custom_field == field }
|
||||||
cv ||= custom_values.build(:customized => self, :custom_field => field, :value => nil)
|
cv ||= custom_values.build(:customized => self, :custom_field => field)
|
||||||
x.value = cv.value
|
x.value = cv.value
|
||||||
end
|
end
|
||||||
x.value_was = x.value.dup if x.value
|
x.value_was = x.value.dup if x.value
|
||||||
|
|||||||
@@ -562,7 +562,7 @@ JSON
|
|||||||
assert_equal "", issue.reload.custom_field_value(field)
|
assert_equal "", issue.reload.custom_field_value(field)
|
||||||
end
|
end
|
||||||
|
|
||||||
test "PUT /issues/:id.json with tracker change and omitted custom field specific to that tracker does not set default value" do
|
test "PUT /issues/:id.json with tracker change and omitted custom field specific to that tracker should set default value" do
|
||||||
field = IssueCustomField.generate!(:default_value => "Default", :tracker_ids => [2])
|
field = IssueCustomField.generate!(:default_value => "Default", :tracker_ids => [2])
|
||||||
issue = Issue.generate!(:project_id => 1, :tracker_id => 1)
|
issue = Issue.generate!(:project_id => 1, :tracker_id => 1)
|
||||||
|
|
||||||
@@ -573,7 +573,7 @@ JSON
|
|||||||
end
|
end
|
||||||
|
|
||||||
assert_equal 2, issue.reload.tracker_id
|
assert_equal 2, issue.reload.tracker_id
|
||||||
assert_nil issue.reload.custom_field_value(field)
|
assert_equal "Default", issue.reload.custom_field_value(field)
|
||||||
end
|
end
|
||||||
|
|
||||||
test "PUT /issues/:id.json with tracker change and custom field specific to that tracker set to blank should not set default value" do
|
test "PUT /issues/:id.json with tracker change and custom field specific to that tracker set to blank should not set default value" do
|
||||||
|
|||||||
@@ -20,15 +20,25 @@ require File.expand_path('../../test_helper', __FILE__)
|
|||||||
class CustomValueTest < ActiveSupport::TestCase
|
class CustomValueTest < ActiveSupport::TestCase
|
||||||
fixtures :custom_fields, :custom_values, :users
|
fixtures :custom_fields, :custom_values, :users
|
||||||
|
|
||||||
def test_default_value
|
def test_new_without_value_should_set_default_value
|
||||||
field = CustomField.find_by_default_value('Default string')
|
field = CustomField.generate!(:default_value => 'Default string')
|
||||||
assert_not_nil field
|
|
||||||
|
|
||||||
v = CustomValue.new(:custom_field => field)
|
v = CustomValue.new(:custom_field => field)
|
||||||
assert_equal 'Default string', v.value
|
assert_equal 'Default string', v.value
|
||||||
|
end
|
||||||
|
|
||||||
v = CustomValue.new(:custom_field => field, :value => 'Not empty')
|
def test_new_with_value_should_not_set_default_value
|
||||||
assert_equal 'Not empty', v.value
|
field = CustomField.generate!(:default_value => 'Default string')
|
||||||
|
|
||||||
|
v = CustomValue.new(:custom_field => field, :value => 'String')
|
||||||
|
assert_equal 'String', v.value
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_new_with_nil_value_should_not_set_default_value
|
||||||
|
field = CustomField.generate!(:default_value => 'Default string')
|
||||||
|
|
||||||
|
v = CustomValue.new(:custom_field => field, :value => nil)
|
||||||
|
assert_nil v.value
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_sti_polymorphic_association
|
def test_sti_polymorphic_association
|
||||||
|
|||||||
Reference in New Issue
Block a user