##// END OF EJS Templates
Merged r11762 and r11763 from trunk (#13783)....
Jean-Philippe Lang -
r11605:2a6dadf78799
parent child
Show More
@@ -77,7 +77,7 class EnumerationsController < ApplicationController
77 return
77 return
78 end
78 end
79 end
79 end
80 @enumerations = @enumeration.class.all - [@enumeration]
80 @enumerations = @enumeration.class.system.all - [@enumeration]
81 end
81 end
82
82
83 private
83 private
@@ -38,6 +38,7 class Enumeration < ActiveRecord::Base
38 scope :shared, lambda { where(:project_id => nil) }
38 scope :shared, lambda { where(:project_id => nil) }
39 scope :sorted, lambda { order("#{table_name}.position ASC") }
39 scope :sorted, lambda { order("#{table_name}.position ASC") }
40 scope :active, lambda { where(:active => true) }
40 scope :active, lambda { where(:active => true) }
41 scope :system, lambda { where(:project_id => nil) }
41 scope :named, lambda {|arg| where("LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip)}
42 scope :named, lambda {|arg| where("LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip)}
42
43
43 def self.default
44 def self.default
@@ -24,11 +24,15 class TimeEntryActivity < Enumeration
24 OptionName
24 OptionName
25 end
25 end
26
26
27 def objects
28 TimeEntry.where(:activity_id => self_and_descendants(1).map(&:id))
29 end
30
27 def objects_count
31 def objects_count
28 time_entries.count
32 objects.count
29 end
33 end
30
34
31 def transfer_relations(to)
35 def transfer_relations(to)
32 time_entries.update_all("activity_id = #{to.id}")
36 objects.update_all(:activity_id => to.id)
33 end
37 end
34 end
38 end
@@ -107,10 +107,11 module ObjectHelpers
107 def TimeEntry.generate!(attributes={})
107 def TimeEntry.generate!(attributes={})
108 entry = TimeEntry.new(attributes)
108 entry = TimeEntry.new(attributes)
109 entry.user ||= User.find(2)
109 entry.user ||= User.find(2)
110 entry.issue ||= Issue.find(1)
110 entry.issue ||= Issue.find(1) unless entry.project
111 entry.project ||= entry.issue.project
111 entry.project ||= entry.issue.project
112 entry.activity ||= TimeEntryActivity.first
112 entry.activity ||= TimeEntryActivity.first
113 entry.spent_on ||= Date.today
113 entry.spent_on ||= Date.today
114 entry.hours ||= 1.0
114 entry.save!
115 entry.save!
115 entry
116 entry
116 end
117 end
@@ -84,5 +84,33 class TimeEntryActivityTest < ActiveSupport::TestCase
84 e.reload
84 e.reload
85 assert_equal "0", e.custom_value_for(field).value
85 assert_equal "0", e.custom_value_for(field).value
86 end
86 end
87 end
88
87
88 def test_system_activity_with_child_in_use_should_be_in_use
89 project = Project.generate!
90 system_activity = TimeEntryActivity.create!(:name => 'Activity')
91 project_activity = TimeEntryActivity.create!(:name => 'Activity', :project => project, :parent_id => system_activity.id)
92
93 TimeEntry.generate!(:project => project, :activity => project_activity)
94
95 assert project_activity.in_use?
96 assert system_activity.in_use?
97 end
98
99 def test_destroying_a_system_activity_should_reassign_children_activities
100 project = Project.generate!
101 system_activity = TimeEntryActivity.create!(:name => 'Activity')
102 project_activity = TimeEntryActivity.create!(:name => 'Activity', :project => project, :parent_id => system_activity.id)
103
104 entries = [
105 TimeEntry.generate!(:project => project, :activity => system_activity),
106 TimeEntry.generate!(:project => project, :activity => project_activity)
107 ]
108
109 assert_difference 'TimeEntryActivity.count', -2 do
110 assert_nothing_raised do
111 assert system_activity.destroy(TimeEntryActivity.find_by_name('Development'))
112 end
113 end
114 assert entries.all? {|entry| entry.reload.activity.name == 'Development'}
115 end
116 end
General Comments 0
You need to be logged in to leave comments. Login now