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
@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=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