def initialize(attributes=nil, *args)
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
end
end
if field.multiple?
values = custom_values.select { |v| v.custom_field == field }
if values.empty?
- values << custom_values.build(:customized => self, :custom_field => field, :value => nil)
+ values << custom_values.build(:customized => self, :custom_field => field)
end
x.value = values.map(&:value)
else
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
end
x.value_was = x.value.dup if x.value
assert_equal "", issue.reload.custom_field_value(field)
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])
issue = Issue.generate!(:project_id => 1, :tracker_id => 1)
end
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
test "PUT /issues/:id.json with tracker change and custom field specific to that tracker set to blank should not set default value" do
class CustomValueTest < ActiveSupport::TestCase
fixtures :custom_fields, :custom_values, :users
- def test_default_value
- field = CustomField.find_by_default_value('Default string')
- assert_not_nil field
+ def test_new_without_value_should_set_default_value
+ field = CustomField.generate!(:default_value => 'Default string')
v = CustomValue.new(:custom_field => field)
assert_equal 'Default string', v.value
+ end
+
+ def test_new_with_value_should_not_set_default_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 => 'Not empty')
- assert_equal 'Not empty', v.value
+ v = CustomValue.new(:custom_field => field, :value => nil)
+ assert_nil v.value
end
def test_sti_polymorphic_association