]> projects.mako.cc - selectricity/blobdiff - test/functional/graph_controller_test.rb
Added functional tests for the graph controller -- assert that valid images return...
[selectricity] / test / functional / graph_controller_test.rb
index 45943351ceac77e198f75d70b9594dc2f449bf0b..e1477079f81cd1400bd2fffa0931c90f51d767cb 100644 (file)
@@ -1,5 +1,6 @@
 require File.dirname(__FILE__) + '/../test_helper'
 require 'graph_controller'
+require 'selectricity_service_controller'
 
 # Re-raise errors caught by the controller.
 class GraphController; def rescue_action(e) raise e end; end
@@ -12,11 +13,105 @@ class GraphControllerTest < Test::Unit::TestCase
     @controller = GraphController.new
     @request    = ActionController::TestRequest.new
     @response   = ActionController::TestResponse.new
+    @SS         = SelectricityService.new
+    @election = nil
   end
 
   # TODO Replace this with your actual tests
-  def test_show
-    assert true
+  def test_show_nonexist_votes_per_interval
+    assert_nothing_raised { get :votes_per_interval, { :id => 42 } }
+  end
+
+  def test_show_nonexist_borda_bar
+    assert_nothing_raised { get :borda_bar, { :id => 42 } }
+  end
+
+  def test_show_nonexist_choices_positions
+    assert_nothing_raised { get :choices_positions, { :id => 42 } }
+  end
+  
+  def test_show_empty_votes_per_interval
+    make_election
+    get :votes_per_interval, { :id => @election.id }
+    assert_response :success
+    assert_equal 'image/png', @response.headers['Content-Type']
+  end
+  
+  def test_show_empty_borda_bar
+    make_election
+    get :borda_bar, { :id => @election.id }
+    assert_response :success
+    assert_equal 'image/png', @response.headers['Content-Type']
+  end
+
+  def test_show_empty_choices_positions
+    make_election
+    get :choices_positions, { :id => @election.id }
+    assert_response :success
+    assert_equal 'image/png', @response.headers['Content-Type']
+  end
+  
+  def test_show_single_votes_per_interval
+    make_election
+    cast_vote
+    get :votes_per_interval, { :id => @election.id }
+    assert_response :success
+    assert_equal 'image/png', @response.headers['Content-Type']
+  end
+  
+  def test_show_single_borda_bar
+    make_election
+    cast_vote
+    get :borda_bar, { :id => @election.id }
+    assert_response :success
+    assert_equal 'image/png', @response.headers['Content-Type']
+  end
+
+  def test_show_single_choices_positions
+    make_election
+    cast_vote
+    get :choices_positions, { :id => @election.id }
+    assert_response :success
+    assert_equal 'image/png', @response.headers['Content-Type']
+  end
+
+  def test_show_many_votes_per_interval
+    make_election
+    20.times {cast_vote}
+    get :votes_per_interval, { :id => @election.id }
+    assert_response :success
+    assert_equal 'image/png', @response.headers['Content-Type']
+  end
+  
+  def test_show_many_borda_bar
+    make_election
+    20.times {cast_vote}
+    get :borda_bar, { :id => @election.id }
+    assert_response :success
+    assert_equal 'image/png', @response.headers['Content-Type']
+  end
+
+  def test_show_many_choices_positions
+    make_election
+    20.times {cast_vote}
+    get :choices_positions, { :id => @election.id }
+    assert_response :success
+    assert_equal 'image/png', @response.headers['Content-Type']
+  end
+
+
+  private
+  def make_election
+    e=ElectionStruct.new( :name => "test", :description => "This is a test",
+                          :candidate_names => ['choice1', 'choice2', 'choice3'])
+    @SS.create_quickvote e
+    @election = @SS.list_quickvotes[0]
+    assert_not_nil @election
+  end
+
+  private
+  def cast_vote
+    @SS.cast_quickvote @election.name, 42, [@election.candidate_ids.sort_by {rand}]
   end
   
 end

Benjamin Mako Hill || Want to submit a patch?