diff --git a/app/controllers/todos_controller.rb b/app/controllers/todos_controller.rb index dbfda8ab..7a290667 100644 --- a/app/controllers/todos_controller.rb +++ b/app/controllers/todos_controller.rb @@ -500,13 +500,10 @@ class TodosController < ApplicationController @uncompleted_predecessors << predecessor end - # activate successors if they only depend on this todo activated_successor_count = 0 @pending_to_activate = [] @todo.pending_successors.each do |successor| - successor.uncompleted_predecessors.delete(@todo) - if successor.uncompleted_predecessors.empty? - successor.activate! + if successor.uncompleted_predecessors.size == 1 @pending_to_activate << successor activated_successor_count += 1 end diff --git a/app/models/todo.rb b/app/models/todo.rb index 241b4461..ea1fbf1c 100644 --- a/app/models/todo.rb +++ b/app/models/todo.rb @@ -409,4 +409,16 @@ class Todo < ActiveRecord::Base count end + def destroy + # activate successors if they only depend on this action + self.pending_successors.each do |successor| + successor.uncompleted_predecessors.delete(self) + if successor.uncompleted_predecessors.empty? + successor.activate! + end + end + + super + end + end diff --git a/test/models/todo_test.rb b/test/models/todo_test.rb index b15d52fd..682bcb4c 100644 --- a/test/models/todo_test.rb +++ b/test/models/todo_test.rb @@ -565,4 +565,15 @@ class TodoTest < ActiveSupport::TestCase assert_equal 0, todo.user.attachments.reload.count assert !File.exists?(new_path), "attachment should not be on file system" end + + def test_destroying_action_activates_successors + @not_completed1.add_predecessor(@not_completed2) + @not_completed1.block! + + @not_completed2.destroy + + @not_completed1.reload + assert @not_completed1.active? + end + end