Applied Luke's patch to init_not_done_counts to exclude actions from hidden projects in the count shown in the sidebar.

git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@340 a4c988fc-2ded-0310-b66e-134b36920a42
This commit is contained in:
bsag 2006-11-13 11:53:27 +00:00
parent a4963a9883
commit 838b2d83c2
2 changed files with 24 additions and 2 deletions

View file

@ -92,11 +92,12 @@ class ApplicationController < ActionController::Base
init_not_done_counts
end
# TODO: Need to exclude hidden projects from this count
def init_not_done_counts(parents = ['project','context'])
parents.each do |parent|
eval("@#{parent}_not_done_counts = Todo.count(:all,
:conditions => ['user_id = ? and type = ? and done = ?', @user.id, \"Immediate\", false],
:conditions => ['todos.user_id = ? and todos.type = ? and todos.done = ? and (projects.state != ? or todos.project_id is ?)',
@user.id, \"Immediate\", false, \"hidden\", nil],
:joins => 'LEFT JOIN projects on projects.id = todos.project_id',
:group => :#{parent}_id)")
end
end

View file

@ -5,6 +5,8 @@ require 'todo_controller'
class TodoController; def rescue_action(e) raise e end; end
class TodoControllerTest < Test::Unit::TestCase
fixtures :users, :preferences, :projects, :contexts, :todos
def setup
@controller = TodoController.new
@request, @response = ActionController::TestRequest.new, ActionController::TestResponse.new
@ -17,4 +19,23 @@ class TodoControllerTest < Test::Unit::TestCase
assert_redirected_to :controller => 'login', :action => 'login'
end
def test_not_done_counts
@request.session['user_id'] = users(:admin_user).id
get :index
assert_equal 2, assigns['project_not_done_counts'][projects(:timemachine).id]
assert_equal 3, assigns['context_not_done_counts'][contexts(:call).id]
assert_equal 1, assigns['context_not_done_counts'][contexts(:lab).id]
end
def test_not_done_counts_after_hiding_project
p = Project.find(1)
p.hide!
p.save!
@request.session['user_id'] = users(:admin_user).id
get :index
assert_equal nil, assigns['project_not_done_counts'][projects(:timemachine).id]
assert_equal 2, assigns['context_not_done_counts'][contexts(:call).id]
assert_equal nil, assigns['context_not_done_counts'][contexts(:lab).id]
end
end