Browse Source

Merged r11762 and r11763 from trunk (#13783).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.3-stable@11835 e93f8b46-1217-0410-a6f0-8f06a7374b81
tags/2.3.2
Jean-Philippe Lang 11 years ago
parent
commit
2a6dadf787

+ 1
- 1
app/controllers/enumerations_controller.rb View File

@@ -77,7 +77,7 @@ class EnumerationsController < ApplicationController
return
end
end
@enumerations = @enumeration.class.all - [@enumeration]
@enumerations = @enumeration.class.system.all - [@enumeration]
end

private

+ 1
- 0
app/models/enumeration.rb View File

@@ -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

+ 6
- 2
app/models/time_entry_activity.rb View File

@@ -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

+ 2
- 1
test/object_helpers.rb View File

@@ -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

+ 29
- 1
test/unit/time_entry_activity_test.rb View File

@@ -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

Loading…
Cancel
Save