X-Git-Url: https://projects.mako.cc/source/selectricity/blobdiff_plain/192728d0e5facadf7e41ed737ca59e5c14123efd..796d33df26fa2f591a405810ae4958a26cf060a4:/test/functional/quickvote_controller_test.rb?ds=inline
diff --git a/test/functional/quickvote_controller_test.rb b/test/functional/quickvote_controller_test.rb
index 3f230b2..ee79b3f 100644
--- a/test/functional/quickvote_controller_test.rb
+++ b/test/functional/quickvote_controller_test.rb
@@ -5,7 +5,10 @@ class ActionController::TestSession
def session_id
# Override this so we can set session ID
# pass in the 'test_session_id' session variable to override default
- (@session and @session['test_session_id']) or "12345678"
+ return "12345678" unless @attributes
+ if @attributes.has_key? 'test_session_id'
+ return @attributes['test_session_id']
+ end
end
end
# Re-raise errors caught by the controller.
@@ -25,14 +28,111 @@ class QuickvoteControllerTest < Test::Unit::TestCase
end
def test_create_quickvote
- post(:create, {'commit' =>"Create Quickvote", 'quickvote' =>{'name' =>"variable", 'description' =>"Favorite variable."}}, nil, {:candlist=>["foo", "bar", "foobar"]})
- assert_response :success
+ post(:create, {'commit' =>"Create Quickvote", 'quickvote' =>{'name' =>"variable", 'description' =>"Favorite variable."}}, nil, {:candidate_names=>["foo", "bar", "foobar"]})
+ assert_template "quickvote/success"
get :index, { 'ident' => "variable"}
assert_response :success
end
+ def test_create_dupe_quickvote
+ test_create_quickvote
+ assert_raise(Test::Unit::AssertionFailedError) do
+ test_create_quickvote
+ end
+ end
+
+ def test_create_quickvote_badname
+ post(:create, {'commit' => "Create Quickvote", 'quickvote' => {'name' => "has a space", 'description' => "Foobar"}}, nil, {:candidate_names => ["foo", "bar", "foobar"]})
+ assert_template "quickvote/create"
+ end
+
+ def test_create_quickvote_dupe_candidate
+ post(:create, {'commit' => "Create Quickvote", 'quickvote' => {'name' => "has a space", 'description' => "Foobar"}}, nil, {:candidate_names => ["foo", "bar", "bar", "foobar"]})
+ assert_template "quickvote/create"
+ end
+
+ def test_create_quickvote_nil_candidate
+ post(:create, {'commit' => "Create Quickvote", 'quickvote' => {'name' => "has a space", 'description' => "Foobar"}}, nil, {:candidate_names => nil})
+ assert_template "quickvote/create"
+ post(:create, {'commit' => "Create Quickvote", 'quickvote' => {'name' => "has a space", 'description' => "Foobar"}}, nil, {:candidate_names => []})
+ assert_template "quickvote/create"
+ end
+
def test_get_quickvote_nonexistent
get :index, { 'ident' => "idontexist" }
assert_redirected_to :controller => 'site'
end
+
+ def test_get_result_empty_vote
+ test_create_quickvote
+ get :results, { 'ident' => 'variable' }
+ assert_response :success
+ end
+
+ def test_get_result_nonexistent
+ test_create_quickvote
+ get :results, { 'ident' => 'asdflaksdjf' }
+ assert_redirected_to :controller => 'site'
+ end
+
+ def test_get_result_with_a_vote
+ test_cast_quickvote
+ get :results, { 'ident' => 'variable' }
+ assert_response :success
+ end
+
+ def test_get_result_multi_votes
+ test_create_quickvote
+ votes = QuickVote.ident_to_quickvote('variable').candidates.collect { |c| c.id}
+ 5.times do |time|
+ get :index, { 'ident' => 'variable' }, { 'test_session_id' => (time+1)*50 }
+ assert_response :success
+ post :confirm, { 'ident' => 'variable', 'rankings-list' => votes.sort_by {rand} }, { 'test_session_id' => (time+1)*50 }
+ assert_template 'quickvote/thanks'
+ end
+ get :results, { 'ident' => 'variable' }
+ assert_response :success
+ end
+
+ def test_cast_quickvote
+ test_create_quickvote
+ votes = QuickVote.ident_to_quickvote('variable').candidates.collect { |c| c.id}
+ post :confirm, { 'ident' => 'variable', 'rankings-list' => votes.sort_by {rand} }
+ assert_template 'quickvote/thanks'
+ end
+
+ def test_cast_dupe_quickvote
+ test_create_quickvote
+ votes = QuickVote.ident_to_quickvote('variable').candidates.collect { |c| c.id}
+ get :index, { 'ident' => 'variable' }
+ assert_response :success
+
+ post :confirm, { 'ident' => 'variable', 'rankings-list' => votes.sort_by {rand} }
+ assert_template 'quickvote/thanks'
+
+ get :index, { 'ident' => 'variable' }
+ assert_response :success
+ post :confirm, { 'ident' => 'variable', 'rankings-list' => votes.sort_by {rand} }
+ assert_redirected_to :controller => 'quickvote', :ident => 'variable'
+ end
+ def test_display_tainted_quickvote
+ test_create_quickvote
+ qv=QuickVote.ident_to_quickvote('variable')
+ qv.description=""
+ qv.candidate_names = ["