From 6017637abcf37e11cf5a8203182640ebe18ffb4e Mon Sep 17 00:00:00 2001 From: Carsten Otto Date: Sun, 22 Mar 2015 00:50:01 +0100 Subject: [PATCH] do not activate already completed todos, fix #1778 --- app/models/todo.rb | 2 +- test/controllers/todos_controller_test.rb | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/models/todo.rb b/app/models/todo.rb index 45b0ae81..3f82e217 100644 --- a/app/models/todo.rb +++ b/app/models/todo.rb @@ -308,7 +308,7 @@ class Todo < ActiveRecord::Base # activate todos that should be activated if the current todo is completed def activate_pending_todos - pending_todos = successors.select {|t| t.uncompleted_predecessors.empty?} + pending_todos = successors.select { |t| t.uncompleted_predecessors.empty? and !t.completed? } pending_todos.each {|t| t.activate! } return pending_todos end diff --git a/test/controllers/todos_controller_test.rb b/test/controllers/todos_controller_test.rb index fcde26dd..910c6c7f 100644 --- a/test/controllers/todos_controller_test.rb +++ b/test/controllers/todos_controller_test.rb @@ -1003,6 +1003,24 @@ class TodosControllerTest < ActionController::TestCase assert t4.predecessors.map(&:id).include?(t3.id) end + + def test_do_not_activate_done_successors + login_as(:admin_user) + predecessor = Todo.find(1) + successor = Todo.find(2) + successor.add_predecessor(predecessor) + + successor.complete! + xhr :post, :toggle_check, :id => predecessor.id, :_source_view => 'todo' + + predecessor.reload + successor.reload + assert !predecessor.active? + assert !successor.active? + assert predecessor.completed? + assert successor.completed? + end + private def create_todo(params={})