@@ -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 |
|
|
32 | objects.count | |
29 | end |
|
33 | end | |
30 |
|
34 | |||
31 | def transfer_relations(to) |
|
35 | def transfer_relations(to) | |
32 |
|
|
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