do not activate already completed todos, fix #1778

This commit is contained in:
Carsten Otto 2015-03-22 00:50:01 +01:00 committed by Reinier Balt
parent 32b48df78f
commit 6017637abc
2 changed files with 19 additions and 1 deletions

View file

@ -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

View file

@ -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={})