X-Git-Url: https://projects.mako.cc/source/selectricity/blobdiff_plain/c1f049541fe6ae41860d1bd76336761c10ca483c..07c4c28f94d7628c0d5c48db810956f680c5f48e:/test/functional/graph_controller_test.rb diff --git a/test/functional/graph_controller_test.rb b/test/functional/graph_controller_test.rb index 4594335..f9d4392 100644 --- a/test/functional/graph_controller_test.rb +++ b/test/functional/graph_controller_test.rb @@ -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_raise(ActiveRecord::RecordNotFound) { get :votes_per_interval, { :id => 42 } } + end + + def test_show_nonexist_borda_bar + assert_raise(ActiveRecord::RecordNotFound) { get :borda_bar, { :id => 42 } } + end + + def test_show_nonexist_choices_positions + assert_raise(ActiveRecord::RecordNotFound) { 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=QuickVoteStruct.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