Major update of Selectricity to work with Rails 2.2.2 from 1.2!
[selectricity] / 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 (file)
index 0000000..f9d4392
--- /dev/null
@@ -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

Benjamin Mako Hill || Want to submit a patch?