tracks/tracks/test/functional/todo_controller_test.rb
lukemelia 2329cb8e1e Introduced user preference for time zone (migration, model and prefs forms)
Made all dates and times stored in UTC in the database and presented according to the User's preferred time zone.
Cleaned up old unused preference methods in UserController
Restored keyboard shortcuts for date field interaction
Aliased preference in User model to prefs for brevity

Don't forget to rake db:migrate for this update!

All tests pass, but there were a lot of little changes involved in this feature. Please help me test it thoroughly if you're using the trunk. 
 
Fixes #349



git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@392 a4c988fc-2ded-0310-b66e-134b36920a42
2007-01-06 10:06:33 +00:00

80 lines
3 KiB
Ruby

require File.dirname(__FILE__) + '/../test_helper'
require 'todo_controller'
# Re-raise errors caught by the 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
end
def test_get_index_when_not_logged_in
get :index
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
def test_not_done_counts_after_hiding_and_unhiding_project
p = Project.find(1)
p.hide!
p.save!
p.activate!
p.save!
@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_deferred_count_for_project_source_view
@request.session['user_id'] = users(:admin_user).id
xhr :post, :toggle_check, :id => 5, :_source_view => 'project'
assert_equal 1, assigns['deferred_count']
xhr :post, :toggle_check, :id => 15, :_source_view => 'project'
assert_equal 0, assigns['deferred_count']
end
def test_destroy_item
@request.session['user_id'] = users(:admin_user).id
xhr :post, :destroy, :id => 1, :_source_view => 'todo'
assert_rjs :page, "todo_1", :remove
#assert_rjs :replace_html, "badge-count", '9'
end
def test_update_item
t = Todo.find(1)
@request.session['user_id'] = users(:admin_user).id
xhr :post, :update, :id => 1, :_source_view => 'todo', "item"=>{"context_id"=>"1", "project_id"=>"2", "id"=>"1", "notes"=>"", "description"=>"Call Warren Buffet to find out how much he makes per day", "due"=>"30/11/2006"}
#assert_rjs :page, "todo_1", :visual_effect, :highlight, :duration => '1'
t = Todo.find(1)
assert_equal "Call Warren Buffet to find out how much he makes per day", t.description
expected = Date.new(2006,11,30).to_time.utc.to_date
actual = t.due
assert_equal expected, actual, "Expected #{expected.to_s(:db)}, was #{actual.to_s(:db)}"
end
end