mirror of
https://github.com/TracksApp/tracks.git
synced 2026-02-03 06:21:49 +01:00
Note that I'm currently only able to successfully run Seleniunm tests on Firefox (Mac & PC). I'm not successful on Safari or IE7. git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@388 a4c988fc-2ded-0310-b66e-134b36920a42
82 lines
3.1 KiB
Ruby
82 lines
3.1 KiB
Ruby
require File.dirname(__FILE__) + '/../test_helper'
|
|
require File.dirname(__FILE__) + '/todo_container_controller_test_base'
|
|
require 'project_controller'
|
|
|
|
# Re-raise errors caught by the controller.
|
|
class ProjectController; def rescue_action(e) raise e end; end
|
|
|
|
class ProjectControllerTest < TodoContainerControllerTestBase
|
|
fixtures :users, :todos, :preferences, :projects
|
|
|
|
def setup
|
|
perform_setup(Project, ProjectController)
|
|
end
|
|
|
|
def test_projects_list
|
|
@request.session['user_id'] = users(:admin_user).id
|
|
get :index
|
|
end
|
|
|
|
def test_show_exposes_deferred_todos
|
|
@request.session['user_id'] = users(:admin_user).id
|
|
p = projects(:timemachine)
|
|
get :show, :url_friendly_name => p.url_friendly_name
|
|
assert_not_nil assigns['deferred']
|
|
assert_equal 1, assigns['deferred'].size
|
|
|
|
t = p.not_done_todos[0]
|
|
t.show_from = 1.days.from_now.to_date
|
|
t.save!
|
|
|
|
get :show, :url_friendly_name => p.url_friendly_name
|
|
assert_equal 2, assigns['deferred'].size
|
|
end
|
|
|
|
def test_create_project_via_ajax_increments_number_of_projects
|
|
assert_ajax_create_increments_count 'My New Project'
|
|
end
|
|
|
|
def test_create_project_with_ajax_success_rjs
|
|
ajax_create 'My New Project'
|
|
assert_rjs :insert_html, :bottom, "list-projects"
|
|
assert_rjs :sortable, 'list-projects', { :tag => 'div', :handle => 'handle', :complete => visual_effect(:highlight, 'list-projects'), :url => {:controller => 'project', :action => 'order'} }
|
|
# not yet sure how to write the following properly...
|
|
assert_rjs :call, "Form.reset", "project-form"
|
|
assert_rjs :call, "Form.focusFirstElement", "project-form"
|
|
end
|
|
|
|
def test_create_with_slash_in_name_does_not_increment_number_of_projects
|
|
assert_ajax_create_does_not_increment_count 'foo/bar'
|
|
end
|
|
|
|
def test_create_with_slash_in_name_fails_with_rjs
|
|
ajax_create 'foo/bar'
|
|
assert_rjs :show, 'status'
|
|
assert_rjs :update, 'status', "<div class=\"ErrorExplanation\" id=\"ErrorExplanation\"><h2>1 error prohibited this record from being saved</h2><p>There were problems with the following fields:</p><ul>Name cannot contain the slash ('/') character</ul></div>"
|
|
end
|
|
|
|
def test_todo_state_is_project_hidden_after_hiding_project
|
|
p = projects(:timemachine)
|
|
todos = p.todos.find_in_state(:all, :active)
|
|
@request.session['user_id'] = users(:admin_user).id
|
|
xhr :post, :update, :id => 1, "project"=>{"name"=>p.name, "description"=>p.description, "state"=>"hidden"}
|
|
todos.each do |t|
|
|
assert_equal :project_hidden, t.reload().current_state
|
|
end
|
|
assert p.reload().hidden?
|
|
end
|
|
|
|
def test_not_done_counts_after_hiding_and_unhiding_project
|
|
p = projects(:timemachine)
|
|
todos = p.todos.find_in_state(:all, :active)
|
|
@request.session['user_id'] = users(:admin_user).id
|
|
xhr :post, :update, :id => 1, "project"=>{"name"=>p.name, "description"=>p.description, "state"=>"hidden"}
|
|
xhr :post, :update, :id => 1, "project"=>{"name"=>p.name, "description"=>p.description, "state"=>"active"}
|
|
todos.each do |t|
|
|
assert_equal :active, t.reload().current_state
|
|
end
|
|
assert p.reload().active?
|
|
end
|
|
|
|
|
|
end
|