git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.3-stable@11835 e93f8b46-1217-0410-a6f0-8f06a7374b81tags/2.3.2
@@ -77,7 +77,7 @@ class EnumerationsController < ApplicationController | |||
return | |||
end | |||
end | |||
@enumerations = @enumeration.class.all - [@enumeration] | |||
@enumerations = @enumeration.class.system.all - [@enumeration] | |||
end | |||
private |
@@ -38,6 +38,7 @@ class Enumeration < ActiveRecord::Base | |||
scope :shared, lambda { where(:project_id => nil) } | |||
scope :sorted, lambda { order("#{table_name}.position ASC") } | |||
scope :active, lambda { where(:active => true) } | |||
scope :system, lambda { where(:project_id => nil) } | |||
scope :named, lambda {|arg| where("LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip)} | |||
def self.default |
@@ -24,11 +24,15 @@ class TimeEntryActivity < Enumeration | |||
OptionName | |||
end | |||
def objects | |||
TimeEntry.where(:activity_id => self_and_descendants(1).map(&:id)) | |||
end | |||
def objects_count | |||
time_entries.count | |||
objects.count | |||
end | |||
def transfer_relations(to) | |||
time_entries.update_all("activity_id = #{to.id}") | |||
objects.update_all(:activity_id => to.id) | |||
end | |||
end |
@@ -107,10 +107,11 @@ module ObjectHelpers | |||
def TimeEntry.generate!(attributes={}) | |||
entry = TimeEntry.new(attributes) | |||
entry.user ||= User.find(2) | |||
entry.issue ||= Issue.find(1) | |||
entry.issue ||= Issue.find(1) unless entry.project | |||
entry.project ||= entry.issue.project | |||
entry.activity ||= TimeEntryActivity.first | |||
entry.spent_on ||= Date.today | |||
entry.hours ||= 1.0 | |||
entry.save! | |||
entry | |||
end |
@@ -84,5 +84,33 @@ class TimeEntryActivityTest < ActiveSupport::TestCase | |||
e.reload | |||
assert_equal "0", e.custom_value_for(field).value | |||
end | |||
end | |||
def test_system_activity_with_child_in_use_should_be_in_use | |||
project = Project.generate! | |||
system_activity = TimeEntryActivity.create!(:name => 'Activity') | |||
project_activity = TimeEntryActivity.create!(:name => 'Activity', :project => project, :parent_id => system_activity.id) | |||
TimeEntry.generate!(:project => project, :activity => project_activity) | |||
assert project_activity.in_use? | |||
assert system_activity.in_use? | |||
end | |||
def test_destroying_a_system_activity_should_reassign_children_activities | |||
project = Project.generate! | |||
system_activity = TimeEntryActivity.create!(:name => 'Activity') | |||
project_activity = TimeEntryActivity.create!(:name => 'Activity', :project => project, :parent_id => system_activity.id) | |||
entries = [ | |||
TimeEntry.generate!(:project => project, :activity => system_activity), | |||
TimeEntry.generate!(:project => project, :activity => project_activity) | |||
] | |||
assert_difference 'TimeEntryActivity.count', -2 do | |||
assert_nothing_raised do | |||
assert system_activity.destroy(TimeEntryActivity.find_by_name('Development')) | |||
end | |||
end | |||
assert entries.all? {|entry| entry.reload.activity.name == 'Development'} | |||
end | |||
end |