From e0143cf435139a498308c5f4ee5cc387b603da62 Mon Sep 17 00:00:00 2001 From: Carsten Otto Date: Sun, 9 Aug 2015 13:47:17 +0200 Subject: [PATCH] move actual activation to model fixes #1881 --- app/controllers/todos_controller.rb | 5 +---- app/models/todo.rb | 12 ++++++++++++ test/models/todo_test.rb | 10 ++++++++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/app/controllers/todos_controller.rb b/app/controllers/todos_controller.rb index baebd36e..4f58bde5 100644 --- a/app/controllers/todos_controller.rb +++ b/app/controllers/todos_controller.rb @@ -494,13 +494,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 3f82e217..1b2d43d8 100644 --- a/app/models/todo.rb +++ b/app/models/todo.rb @@ -408,4 +408,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 dcdf1a2d..fe6e8f30 100644 --- a/test/models/todo_test.rb +++ b/test/models/todo_test.rb @@ -542,4 +542,14 @@ class TodoTest < ActiveSupport::TestCase assert_equal "

test

", todo.rendered_notes 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