]> source.dussan.org Git - redmine.git/commitdiff
Unarchive link not working for subprojects of closed projects (#24595).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 13 Dec 2016 20:01:57 +0000 (20:01 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 13 Dec 2016 20:01:57 +0000 (20:01 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@16071 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/project.rb
test/unit/project_test.rb

index 2f258f3f9e61264a78ee9413df32c841a585559a..3582a2c678e217bac9e912c5ec753249ea2a7a2b 100644 (file)
@@ -350,6 +350,10 @@ class Project < ActiveRecord::Base
     self.status == STATUS_ACTIVE
   end
 
+  def closed?
+    self.status == STATUS_CLOSED
+  end
+
   def archived?
     self.status == STATUS_ARCHIVED
   end
@@ -377,8 +381,12 @@ class Project < ActiveRecord::Base
   # Unarchives the project
   # All its ancestors must be active
   def unarchive
-    return false if ancestors.detect {|a| !a.active?}
-    update_attribute :status, STATUS_ACTIVE
+    return false if ancestors.detect {|a| a.archived?}
+    new_status = STATUS_ACTIVE
+    if parent
+      new_status = parent.status
+    end
+    update_attribute :status, new_status
   end
 
   def close
index 3809662f7e6c974756252051ccdfcbdde75b46eb..b740ee6497049af68d6e5b4f63cf01579cfc7fe0 100644 (file)
@@ -205,6 +205,18 @@ class ProjectTest < ActiveSupport::TestCase
     assert @ecookbook_sub1.unarchive
   end
 
+  def test_unarchive_a_child_of_a_closed_project_should_set_status_to_closed
+    Project.find(1).close
+    child = Project.find(3)
+    assert_equal Project::STATUS_CLOSED, child.status
+
+    child.archive
+    assert_equal Project::STATUS_ARCHIVED, child.status
+
+    child.unarchive
+    assert_equal Project::STATUS_CLOSED, child.status
+  end
+
   def test_destroy
     # 2 active members
     assert_equal 2, @ecookbook.members.size