mirror of
https://github.com/meineerde/redmine.git
synced 2026-02-03 23:53:23 +00:00
Saving time tracking activities without any change may turn a system activity into a project activity (#36318).
Patch by Yuichi HARADA. git-svn-id: http://svn.redmine.org/redmine/trunk@21319 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
81e25404aa
commit
fde1e18b3a
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -144,7 +144,7 @@ class TimeEntryActivityTest < ActiveSupport::TestCase
|
||||
parent_activity.id.to_s => {
|
||||
'parent_id' => parent_activity.id.to_s,
|
||||
'active' => '0',
|
||||
'custom_field_values' => {'7' => ''}
|
||||
'custom_field_values' => {'7' => '1'}
|
||||
}
|
||||
}
|
||||
)
|
||||
@ -158,7 +158,7 @@ class TimeEntryActivityTest < ActiveSupport::TestCase
|
||||
other_parent_activity.id.to_s => {
|
||||
'parent_id' => other_parent_activity.id.to_s,
|
||||
'active' => '0',
|
||||
'custom_field_values' => {'7' => ''}
|
||||
'custom_field_values' => {'7' => '1'}
|
||||
}
|
||||
}
|
||||
)
|
||||
@ -179,7 +179,7 @@ class TimeEntryActivityTest < ActiveSupport::TestCase
|
||||
parent_activity.id.to_s => {
|
||||
'parent_id' => parent_activity.id.to_s,
|
||||
'active' => '0',
|
||||
'custom_field_values' => {'7' => ''}
|
||||
'custom_field_values' => {'7' => '1'}
|
||||
}
|
||||
}
|
||||
)
|
||||
@ -196,4 +196,27 @@ class TimeEntryActivityTest < ActiveSupport::TestCase
|
||||
assert_equal 'Design2', project_activity.reload.name
|
||||
assert_equal 'Design3', parent_activity.reload.name
|
||||
end
|
||||
|
||||
def test_project_activity_should_not_be_created_if_no_custom_value_is_changed
|
||||
system_activity = TimeEntryActivity.find(9) # Design
|
||||
assert_equal true, system_activity.active
|
||||
|
||||
custom_field_value = system_activity.custom_field_values.detect{|cfv| cfv.custom_field.id == 7}
|
||||
assert_nil custom_field_value.value
|
||||
|
||||
project = Project.find(1)
|
||||
assert_equal 0, project.time_entry_activities.count
|
||||
|
||||
assert_no_difference 'TimeEntryActivity.count' do
|
||||
project.update_or_create_time_entry_activities(
|
||||
{
|
||||
'9' => {
|
||||
'parent_id' => '9',
|
||||
'active' => '1',
|
||||
'custom_field_values' => {'7' => ''}
|
||||
}
|
||||
}
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user