Project

General

Profile

Feature #37862 » 0002-Adds-estimated-remaining-time-to-version-page-37862-.patch

Marius BĂLTEANU, 2024-05-02 18:19

View differences:

app/models/version.rb
24 24
    @estimated_hours ||= sum(:estimated_hours).to_f
25 25
  end
26 26

  
27
  # Returns the total estimated remaining time for this version
28
  # (sum of leaves remaining_estimated_hours)
29
  def estimated_remaining_hours
30
    @estimated_remaining_hours ||= sum(IssueQuery::ESTIMATED_REMAINING_HOURS_SQL).to_f
31
  end
32

  
27 33
  # Returns the total amount of open issues for this version.
28 34
  def open_count
29 35
    load_counts
......
236 242
    fixed_issues.estimated_hours
237 243
  end
238 244

  
245
  # Returns the total estimated remaining time for this version
246
  # (sum of leaves estimated_remaining_hours)
247
  def estimated_remaining_hours
248
    @remaining_hours ||= fixed_issues.estimated_remaining_hours
249
  end
250

  
239 251
  # Returns the total reported time for this version
240 252
  def spent_hours
241 253
    @spent_hours ||= TimeEntry.joins(:issue).where("#{Issue.table_name}.fixed_version_id = ?", id).sum(:hours).to_f
app/views/versions/show.html.erb
22 22
    <td class="total-hours"><%= link_to html_hours(l_hours(@version.visible_fixed_issues.estimated_hours)),
23 23
                                        project_issues_path(@version.project, :set_filter => 1, :status_id => '*', :fixed_version_id => @version.id, :c => [:tracker, :status, :subject, :estimated_hours], :t => [:estimated_hours]) %></td>
24 24
</tr>
25
<tr>
26
  <th><%= l(:field_estimated_remaining_hours) %></th>
27
  <td class="total-hours">
28
    <%= link_to html_hours(l_hours(@version.visible_fixed_issues.estimated_remaining_hours)),
29
          project_issues_path(@version.project, :set_filter => 1, :status_id => '*', :fixed_version_id => @version.id, :c => [:tracker, :status, :subject, :estimated_remaining_hours], :t => [:estimated_remaining_hours]) %>
30
  </td>
31
</tr>
25 32
<% if User.current.allowed_to_view_all_time_entries?(@project) %>
26 33
<tr>
27 34
    <th><%= l(:label_spent_time) %></th>
test/unit/version_test.rb
201 201
    assert_equal false, version.behind_schedule?
202 202
  end
203 203

  
204
  test "#estimated_hours should return 0 with no assigned issues" do
204
  test "#estimated_hours and estimated_remaining_hours should return 0 with no assigned issues" do
205 205
    version = Version.generate!
206 206
    assert_equal 0, version.estimated_hours
207
    assert_equal 0, version.estimated_remaining_hours
207 208
  end
208 209

  
209
  test "#estimated_hours should return 0 with no estimated hours" do
210
  test "#estimated_hours and estimated_remaining_hours should return 0 with no estimated hours" do
210 211
    version = Version.create!(:project_id => 1, :name => 'test')
211 212
    add_issue(version)
212 213
    assert_equal 0, version.estimated_hours
214
    assert_equal 0, version.estimated_remaining_hours
213 215
  end
214 216

  
215
  test "#estimated_hours should return return the sum of estimated hours" do
217
  test "#estimated_hours and estimated_remaining_hours should return the sum of estimated hours and estimated remaining hours" do
216 218
    version = Version.create!(:project_id => 1, :name => 'test')
217
    add_issue(version, :estimated_hours => 2.5)
218
    add_issue(version, :estimated_hours => 5)
219
    add_issue(version, :estimated_hours => 2.5, :done_ratio => 90)
220
    add_issue(version, :estimated_hours => 5, :done_ratio => 50)
219 221
    assert_equal 7.5, version.estimated_hours
222
    assert_equal 2.75, version.estimated_remaining_hours
220 223
  end
221 224

  
222
  test "#estimated_hours should return the sum of leaves estimated hours" do
225
  test "#estimated_hours and remaining_hours should return the sum of leaves estimated hours and estimated remaining hours" do
223 226
    version = Version.create!(:project_id => 1, :name => 'test')
224 227
    parent = add_issue(version)
225
    add_issue(version, :estimated_hours => 2.5, :parent_issue_id => parent.id)
226
    add_issue(version, :estimated_hours => 5, :parent_issue_id => parent.id)
228
    add_issue(version, :estimated_hours => 2.5, :done_ratio => 90, :parent_issue_id => parent.id)
229
    add_issue(version, :estimated_hours => 5, :done_ratio => 50, :parent_issue_id => parent.id)
227 230
    assert_equal 7.5, version.estimated_hours
231
    assert_equal 2.75, version.estimated_remaining_hours
228 232
  end
229 233

  
230 234
  test "should update all issue's fixed_version associations in case the hierarchy changed XXX" do
(5-5/5)