X-Git-Url: https://projects.mako.cc/source/selectricity-live/blobdiff_plain/05ebed925ae2b5e7bf2a599536ba7d7ac15ffbf7..ad088c1324d08a65f6f5336bedf7a88a8a8950e7:/old_api_code/graph_controller_test.rb diff --git a/old_api_code/graph_controller_test.rb b/old_api_code/graph_controller_test.rb new file mode 100644 index 0000000..f9d4392 --- /dev/null +++ b/old_api_code/graph_controller_test.rb @@ -0,0 +1,117 @@ +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 + +class GraphControllerTest < Test::Unit::TestCase + + #fixtures :data + + def setup + @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_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