diff --git a/app/models/enumeration.rb b/app/models/enumeration.rb index 5f0e023ed9..534d8239e1 100644 --- a/app/models/enumeration.rb +++ b/app/models/enumeration.rb @@ -117,7 +117,7 @@ class Enumeration < ActiveRecord::Base # Does the +new+ Hash have the same custom values as the previous Enumeration? def self.same_custom_values?(new, previous) previous.custom_field_values.each do |custom_value| - if custom_value.value != new["custom_field_values"][custom_value.custom_field_id.to_s] + if custom_value.to_s != new["custom_field_values"][custom_value.custom_field_id.to_s].to_s return false end end diff --git a/test/functional/project_enumerations_controller_test.rb b/test/functional/project_enumerations_controller_test.rb index 3c4f44f32e..b82dc50929 100644 --- a/test/functional/project_enumerations_controller_test.rb +++ b/test/functional/project_enumerations_controller_test.rb @@ -93,6 +93,26 @@ class ProjectEnumerationsControllerTest < Redmine::ControllerTest assert_nil project.time_entry_activities.find_by_name("QA"), "Custom QA activity created when it wasn't modified" end + def test_update_should_not_create_project_specific_activities_when_setting_empty_value_in_custom_field_with_default_value_of_nil + system_activity = TimeEntryActivity.find(9) # Design + custom_field_value = system_activity.custom_field_values.detect{|cfv| cfv.custom_field.id == 7} + assert_nil custom_field_value.value + + assert_no_difference 'TimeEntryActivity.count' do + @request.session[:user_id] = 2 # manager + put( + :update, + :params => { + :project_id => 1, + :enumerations => { + "9" => {"parent_id" => "9", "custom_field_values" => {"7" => ""}, "active" => "1"} + } + } + ) + assert_response :redirect + end + end + def test_update_will_update_project_specific_activities @request.session[:user_id] = 2 # manager