]> projects.mako.cc - selectricity-live/blobdiff - test/functional/quickvote_controller_test.rb
* Fix the session_id accessor. Previous version looks for wrong method
[selectricity-live] / test / functional / quickvote_controller_test.rb
index ceb1b6b4b5d1cd518f75e305521a2cc8851d2f5f..a390d9462b19453558a2f993c9ce29296e64da76 100644 (file)
@@ -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.
@@ -31,6 +34,13 @@ class QuickvoteControllerTest < Test::Unit::TestCase
     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, {:candlist => ["foo", "bar", "foobar"]})
     assert_template "quickvote/create"
@@ -41,8 +51,53 @@ class QuickvoteControllerTest < Test::Unit::TestCase
     assert_template "quickvote/create"
   end
   
+  def test_create_quickvote_nil_candidate
+    post(:create, {'commit' => "Create Quickvote", 'quickvote' => {'name' => "has a space", 'description' => "Foobar"}}, nil, {:candlist => nil})
+    assert_template "quickvote/create"
+    post(:create, {'commit' => "Create Quickvote", 'quickvote' => {'name' => "has a space", 'description' => "Foobar"}}, nil, {:candlist => []})
+    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
 end

Benjamin Mako Hill || Want to submit a patch?