@@ -77,7 +77,7 class EnumerationsController < ApplicationController | |||
|
77 | 77 | return |
|
78 | 78 | end |
|
79 | 79 | end |
|
80 | @enumerations = @enumeration.class.all - [@enumeration] | |
|
80 | @enumerations = @enumeration.class.system.all - [@enumeration] | |
|
81 | 81 | end |
|
82 | 82 | |
|
83 | 83 | private |
@@ -38,6 +38,7 class Enumeration < ActiveRecord::Base | |||
|
38 | 38 | scope :shared, lambda { where(:project_id => nil) } |
|
39 | 39 | scope :sorted, lambda { order("#{table_name}.position ASC") } |
|
40 | 40 | scope :active, lambda { where(:active => true) } |
|
41 | scope :system, lambda { where(:project_id => nil) } | |
|
41 | 42 | scope :named, lambda {|arg| where("LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip)} |
|
42 | 43 | |
|
43 | 44 | def self.default |
@@ -24,11 +24,15 class TimeEntryActivity < Enumeration | |||
|
24 | 24 | OptionName |
|
25 | 25 | end |
|
26 | 26 | |
|
27 | def objects | |
|
28 | TimeEntry.where(:activity_id => self_and_descendants(1).map(&:id)) | |
|
29 | end | |
|
30 | ||
|
27 | 31 | def objects_count |
|
28 |
|
|
|
32 | objects.count | |
|
29 | 33 | end |
|
30 | 34 | |
|
31 | 35 | def transfer_relations(to) |
|
32 |
|
|
|
36 | objects.update_all(:activity_id => to.id) | |
|
33 | 37 | end |
|
34 | 38 | end |
@@ -107,10 +107,11 module ObjectHelpers | |||
|
107 | 107 | def TimeEntry.generate!(attributes={}) |
|
108 | 108 | entry = TimeEntry.new(attributes) |
|
109 | 109 | entry.user ||= User.find(2) |
|
110 | entry.issue ||= Issue.find(1) | |
|
110 | entry.issue ||= Issue.find(1) unless entry.project | |
|
111 | 111 | entry.project ||= entry.issue.project |
|
112 | 112 | entry.activity ||= TimeEntryActivity.first |
|
113 | 113 | entry.spent_on ||= Date.today |
|
114 | entry.hours ||= 1.0 | |
|
114 | 115 | entry.save! |
|
115 | 116 | entry |
|
116 | 117 | end |
@@ -84,5 +84,33 class TimeEntryActivityTest < ActiveSupport::TestCase | |||
|
84 | 84 | e.reload |
|
85 | 85 | assert_equal "0", e.custom_value_for(field).value |
|
86 | 86 | end |
|
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? | |
|
87 | 97 | end |
|
88 | 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