require File.dirname(__FILE__) + '/../test_helper' require 'tasks_controller' # Re-raise errors caught by the controller. class TasksController; def rescue_action(e) raise e end; end class TasksControllerTest < Test::Unit::TestCase fixtures :parties, :users, :groups, :groups_users, :backlogs, :periods, :tasks, :works, :estimates def setup @controller = TasksController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new @request.session[:user_id] = 1000001 end def test_index get :index assert_redirected_to :controller => 'backlogs' end def test_list get :list assert_redirected_to :controller => 'backlogs' end def test_list_started get :list_started, :id => '1' assert_response :success assert_template 'list_started' assert_not_nil assigns(:tasks) assert_not_nil assigns(:selected_task) end def test_list_started_no_selected_task get :list_started assert_response :success assert_template 'list_started' assert_not_nil assigns(:tasks) assert_nil assigns(:selected_task) end def test_new get :new assert_response :success assert_template 'new' assert_not_nil assigns(:task) end def test_create num_tasks = Task.count post :create, :task => {:description => 'an important task', :backlog_id => '2', :period_id => '2'} task = assigns(:task) assert_equal [], task.errors.full_messages assert_response :redirect assert_redirected_to :controller => 'periods', :action => 'show', :id => Period.find(2) assert_equal num_tasks + 1, Task.count end def test_create_without_period num_tasks = Task.count post :create, :task => {:description => 'an important task', :backlog_id => '2'} task = assigns(:task) assert_equal [], task.errors.full_messages assert_response :redirect assert_redirected_to :controller => 'backlogs', :action => 'show', :id => 2 assert_equal num_tasks + 1, Task.count end def test_edit get :edit, :id => 1 assert_response :success assert_template 'edit' assert_not_nil assigns(:task) assert assigns(:task).valid? end def test_update post :update, :id => 2, :task => {:description => 'Two'} assert_response :redirect assert_redirected_to :action => 'show', :id => 2 after = Task.find(2) assert_equal 'Two', after.description end def test_destroy assert_not_nil Task.find(1) post :destroy, :id => 1 assert_response :redirect assert_redirected_to :controller => 'periods', :action => 'show', :id => Period.find(1) assert_raise(ActiveRecord::RecordNotFound) { Task.find(1) } end def test_end_work before = Task.find(1) post :end_work, :id => 1, :work => {:work_started_at_time => (Time.now - 3600).strftime('%H:%M')} assert_response :redirect assert_redirected_to :controller => 'works', :action => :new, 'work[hours]' => "0.25", 'work[task_id]' => 1, 'work[completed_at]' => Time.next_quarter.iso8601, 'work[started_at]' => Time.previous_quarter.iso8601, 'estimate[todo]' => 1 after = Task.find(1) assert((after.total_done == BigDecimal('1')) || (after.total_done - 1 < 0.2)) end def test_move_to_next_period_at_end before = Task.find(2) assert_equal 2, before.period_id post :move_to_next_period, :id => 2 assert_response :redirect assert_redirected_to :controller => 'periods', :action => :new, :period => {:party_id => 1} after = Task.find(2) assert_equal 2, before.period_id end end