Project

General

Profile

Feature #43883 ยป 0001-Reset-Done-to-the-default-value-of-a-new-issue-when-.patch

Go MAEDA, 2026-09-30 11:07

View differences:

app/models/issue.rb
317 317
    self.attributes =
318 318
      issue.attributes.dup.except(
319 319
        "id", "root_id", "parent_id", "lft", "rgt",
320
        "created_on", "updated_on", "status_id", "closed_on"
320
        "created_on", "updated_on", "status_id", "closed_on", "done_ratio"
321 321
      )
322 322
    self.custom_field_values =
323 323
      issue.custom_field_values.to_h do |v|
......
325 325
      end
326 326
    if options[:keep_status]
327 327
      self.status = issue.status
328
      self.done_ratio = issue.read_attribute(:done_ratio)
328 329
    end
329 330
    self.author = User.current
330 331
    unless options[:attachments] == false
test/unit/issue_test.rb
1398 1398
    assert_equal orig.status, issue.status
1399 1399
  end
1400
  def test_copy_should_reset_done_ratio_to_default_value
1401
    with_settings :issue_done_ratio => 'issue_field' do
1402
      orig = Issue.generate!(:done_ratio => 80)
1403

  
1404
      issue = Issue.new.copy_from(orig)
1405
      assert_equal 0, issue.done_ratio
1406
      assert issue.save
1407
      assert_equal 0, issue.reload.done_ratio
1408
    end
1409
  end
1410

  
1411
  def test_copy_should_use_default_done_ratio_of_default_status_when_done_ratio_is_based_on_issue_status
1412
    IssueStatus.find(1).update!(:default_done_ratio => 20)
1413
    with_settings :issue_done_ratio => 'issue_status' do
1414
      orig = Issue.generate!(:status_id => 2, :done_ratio => 80)
1415

  
1416
      issue = Issue.new.copy_from(orig)
1417
      assert_equal 1, issue.status_id
1418
      assert_equal 20, issue.done_ratio
1419
      assert issue.save
1420
      assert_equal 20, issue.reload.done_ratio
1421
    end
1422
  end
1423

  
1424
  def test_copy_with_keep_status_should_copy_done_ratio
1425
    orig = Issue.generate!(:status_id => 2, :done_ratio => 80)
1426

  
1427
    issue = Issue.new.copy_from(orig, :keep_status => true)
1428
    assert issue.save
1429
    assert_equal 80, issue.reload.done_ratio
1430
  end
1431

  
1400 1432
  def test_copy_should_add_relation_with_copied_issue
1401 1433
    copied = Issue.find(1)
1402 1434
    issue = Issue.new.copy_from(copied)
test/unit/project_copy_test.rb
46 46
  test "#copy should copy issues" do
47 47
    @source_project.issues << Issue.generate!(:status => IssueStatus.find_by_name('Closed'),
48 48
                                              :subject => "copy issue status",
49
                                              :done_ratio => 80,
49 50
                                              :tracker_id => 1,
50 51
                                              :assigned_to_id => 2,
51 52
                                              :project_id => @source_project.id)
......
64 65
    assert copied_issue
65 66
    assert copied_issue.status
66 67
    assert_equal "Closed", copied_issue.status.name
68
    assert_equal 80, copied_issue.done_ratio
67 69
  end
68 70
  test "#copy should copy issues custom values" do
    (1-1/1)