From: John Dong Date: Tue, 28 Aug 2007 20:11:45 +0000 (-0400) Subject: Rename Selectricity API calls to more explicitly call itself quickvotes. X-Git-Url: https://projects.mako.cc/source/selectricity/commitdiff_plain/575b480d55931d0ad4d4ed435b6166fbcfe23104?ds=sidebyside Rename Selectricity API calls to more explicitly call itself quickvotes. --- diff --git a/app/apis/selectricity_api.rb b/app/apis/selectricity_api.rb index 9c95369..005985b 100644 --- a/app/apis/selectricity_api.rb +++ b/app/apis/selectricity_api.rb @@ -1,11 +1,11 @@ -class ElectionStruct < ActionWebService::Struct +class QuickVoteStruct < ActionWebService::Struct member :name, :string member :description, :string member :candidate_ids, [:int] member :candidate_names, [:string] member :id, :int end -class VoteInfo < ActionWebService::Struct +class QuickVoterInfo < ActionWebService::Struct member :voter_id, :int member :voter_session_id, :string member :voter_ipaddress, :string @@ -13,26 +13,24 @@ class VoteInfo < ActionWebService::Struct member :vote, [:int] end -class VoteResultStruct < ActionWebService::Struct +class QuickVoteResultStruct < ActionWebService::Struct member :plurality_winners, [:int] member :approval_winners, [:int] member :condorcet_winners, [:int] member :ssd_winners, [:int] member :borda_winners, [:int] end -class CandidateMap < ActionWebService::Struct +class QuickVoteCandidateMap < ActionWebService::Struct member :candidate_ids, [:int] member :candidate_names, [:string] end class SelectricityAPI < ActionWebService::API::Base api_method :cast_quickvote, :expects => [:string, :int, [[:int]]], :returns => [:string] - api_method :get_quickvote_results, :expects => [:string], :returns => [VoteResultStruct] - api_method :get_quickvote_candidate_map, :expects => [:string], :returns => [CandidateMap] + api_method :get_quickvote_results, :expects => [:string], :returns => [QuickVoteResultStruct] + api_method :get_quickvote_candidate_map, :expects => [:string], :returns => [QuickVoteCandidateMap] api_method :quickvote_candidate_ids_to_names, :expects => [:string,[:int]], :returns => [[:string]] - api_method :get_quickvote_votes, :expects => [:string], :returns => [ [VoteInfo] ] - api_method :list_quickvotes, :expects => [], :returns => [[ElectionStruct]] - api_method :get_quickvote, :expects => [:string], :returns => [ElectionStruct] - api_method :create_quickvote, :expects => [ElectionStruct], :returns => [:string] + api_method :get_quickvote_votes, :expects => [:string], :returns => [ [QuickVoterInfo] ] + api_method :list_quickvotes, :expects => [], :returns => [[QuickVoteStruct]] + api_method :get_quickvote, :expects => [:string], :returns => [QuickVoteStruct] + api_method :create_quickvote, :expects => [QuickVoteStruct], :returns => [:string] end - - diff --git a/app/models/selectricity_service.rb b/app/models/selectricity_service.rb index 544b618..a3de89f 100644 --- a/app/models/selectricity_service.rb +++ b/app/models/selectricity_service.rb @@ -45,7 +45,7 @@ class SelectricityService < ActionWebService::Base def get_quickvote_results(shortname) #TODO: Validate shortname qv=QuickVote.ident_to_quickvote(shortname) - result=VoteResultStruct.new + result=QuickVoteResultStruct.new unless qv raise ArgumentError.new("No quickvote with name #{shortname} found!") end @@ -59,7 +59,7 @@ class SelectricityService < ActionWebService::Base end def get_quickvote_candidate_map(shortname) qv=QuickVote.ident_to_quickvote(shortname) - result=CandidateMap.new + result=QuickVoteCandidateMap.new unless qv raise ArgumentError.new("No quickvote with name #{shortname} found!") end @@ -78,7 +78,7 @@ class SelectricityService < ActionWebService::Base end qv.votes.collect do |vote| - VoteInfo.new(:voter_id => vote.voter.id, + QuickVoterInfo.new(:voter_id => vote.voter.id, :voter_ipaddress => vote.voter.ipaddress, :vote_time => vote.time.to_i, :vote => vote.votes, @@ -97,7 +97,7 @@ class SelectricityService < ActionWebService::Base raise ArgumentError.new("Cannot find QuickVote named #{shortname}") end - ElectionStruct.new( + QuickVoteStruct.new( :id => election.id, :name => election.name, :description => election.description, diff --git a/db/schema.rb b/db/schema.rb index 4ea61b7..590425d 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -5,12 +5,9 @@ ActiveRecord::Schema.define() do create_table "candidates", :force => true do |t| - t.column "election_id", :integer, :null => false - t.column "name", :string, :limit => 100, :default => "", :null => false - t.column "description", :text - t.column "picture_filename", :string, :limit => 200 - t.column "picture_data", :binary - t.column "picture_type", :string, :limit => 100 + t.column "election_id", :integer, :null => false + t.column "name", :string, :limit => 100, :default => "", :null => false + t.column "description", :text end create_table "elections", :force => true do |t| @@ -30,12 +27,31 @@ ActiveRecord::Schema.define() do add_index "elections", ["user_id"], :name => "fk_user_election" + create_table "pictures", :force => true do |t| + t.column "filename", :string, :limit => 200 + t.column "data", :binary + t.column "filetype", :string, :limit => 100 + t.column "candidate_id", :integer + end + + add_index "pictures", ["candidate_id"], :name => "fk_candidate_picture" + create_table "rankings", :force => true do |t| t.column "vote_id", :integer t.column "candidate_id", :integer t.column "rank", :integer end + create_table "sitealizer", :force => true do |t| + t.column "path", :string + t.column "ip", :string + t.column "referer", :string + t.column "language", :string + t.column "user_agent", :string + t.column "created_at", :datetime + t.column "created_on", :date + end + create_table "tokens", :force => true do |t| t.column "token", :string, :limit => 100, :default => "", :null => false t.column "vote_id", :integer, :null => false diff --git a/test/functional/graph_controller_test.rb b/test/functional/graph_controller_test.rb index e5c2790..f9d4392 100644 --- a/test/functional/graph_controller_test.rb +++ b/test/functional/graph_controller_test.rb @@ -102,7 +102,7 @@ class GraphControllerTest < Test::Unit::TestCase private def make_election - e=ElectionStruct.new( :name => "test", :description => "This is a test", + e=QuickVoteStruct.new( :name => "test", :description => "This is a test", :candidate_names => ['choice1', 'choice2', 'choice3']) @SS.create_quickvote e @election = @SS.list_quickvotes[0] diff --git a/test/unit/selectricityservice_test.rb b/test/unit/selectricityservice_test.rb index 1c28cf1..cdc2b42 100644 --- a/test/unit/selectricityservice_test.rb +++ b/test/unit/selectricityservice_test.rb @@ -15,7 +15,7 @@ class SelectricityServiceTest < Test::Unit::TestCase end def test_create_quickvote - election = ElectionStruct.new( + election = QuickVoteStruct.new( { :name => "TestVote", :description => "Test Vote", :candidate_names => ["Apple", "Orange", "Banana", "Pineapple"] }) @@ -88,7 +88,7 @@ class SelectricityServiceTest < Test::Unit::TestCase def test_create_mass_quickvote 10.times do |t| - assert_create_quickvote_succeeds ElectionStruct.new({ + assert_create_quickvote_succeeds QuickVoteStruct.new({ :name => "test#{t}", :description => "Test Vote", :candidate_names => ["Apple", "Orange", "Banana", "Pineapple"]}) @@ -96,7 +96,7 @@ class SelectricityServiceTest < Test::Unit::TestCase end def test_create_quickvote_bad_name - assert_create_quickvote_fails ElectionStruct.new({ + assert_create_quickvote_fails QuickVoteStruct.new({ :name => "invalid space", :description => "Test Vote", :candidate_names => ["Apple", "Orange", "Banana", "Pineapple"]}) @@ -104,58 +104,58 @@ class SelectricityServiceTest < Test::Unit::TestCase end def test_create_quickvote_nil - assert_create_quickvote_fails ElectionStruct.new() + assert_create_quickvote_fails QuickVoteStruct.new() end def test_create_quickvote_name_nil - assert_create_quickvote_fails ElectionStruct.new({ + assert_create_quickvote_fails QuickVoteStruct.new({ :name => "", :description => "Test Vote", :candidate_names => ["Apple", "Orange", "Banana", "Pineapple"]}) end def test_create_quickvote_description_nil - assert_create_quickvote_fails ElectionStruct.new({ + assert_create_quickvote_fails QuickVoteStruct.new({ :name => "foobar", :description => nil, :candidate_names => ["Apple", "Orange", "Banana", "Pineapple"]}) end def test_create_quickvote_description_whitespace - assert_create_quickvote_fails ElectionStruct.new({ + assert_create_quickvote_fails QuickVoteStruct.new({ :name => "foobar", :description => " ", :candidate_names => ["Apple", "Orange", "Banana", "Pineapple"]}) - assert_create_quickvote_fails ElectionStruct.new({ + assert_create_quickvote_fails QuickVoteStruct.new({ :name => "foobar", :description => "\t\t", :candidate_names => ["Apple", "Orange", "Banana", "Pineapple"]}) end def test_create_quickvote_candidates_nil - assert_create_quickvote_fails ElectionStruct.new({ + assert_create_quickvote_fails QuickVoteStruct.new({ :name => "foobar", :description => "valid", :candidate_names => nil }) end def test_create_quickvote_insufficient_candidates - assert_create_quickvote_fails ElectionStruct.new({ + assert_create_quickvote_fails QuickVoteStruct.new({ :name => "foobar", :description => "valid", :candidate_names => ["Apple"] }) end def test_create_quickvote_candidates_whitespace - assert_create_quickvote_fails ElectionStruct.new({ + assert_create_quickvote_fails QuickVoteStruct.new({ :name => "foobar", :description => "valid", :candidate_names => [" ", " ", " ", " "]}) end def test_create_quickvote_dupe_candidates - assert_create_quickvote_fails ElectionStruct.new({ + assert_create_quickvote_fails QuickVoteStruct.new({ :name => "foobar", :description => "valid", :candidate_names => ["Apple", "Apple", "Apple", "Apple"]}) @@ -166,7 +166,7 @@ class SelectricityServiceTest < Test::Unit::TestCase # We don't want this to happen. Dupe canidates should fail # regardless of how many are left. - assert_create_quickvote_fails ElectionStruct.new({ + assert_create_quickvote_fails QuickVoteStruct.new({ :name => "foobar", :description => "valid", :candidate_names => ["Apple", "Apple", "Orange", @@ -174,7 +174,7 @@ class SelectricityServiceTest < Test::Unit::TestCase end def test_create_quickvote_candidates_nil_mixed - assert_create_quickvote_fails ElectionStruct.new({ + assert_create_quickvote_fails QuickVoteStruct.new({ :name => "foobar", :description => "valid", :candidate_names => ["Apple", nil ]}) @@ -183,21 +183,21 @@ class SelectricityServiceTest < Test::Unit::TestCase def test_create_quickvote_description_xmlescape # Will an embedded XML element bork the table? - assert_create_quickvote_succeeds ElectionStruct.new({ + assert_create_quickvote_succeeds QuickVoteStruct.new({ :name => "foobar", :description => "test ", :candidate_names => ["Apple", "Orange", "Banana", "Pineapple"]}) end def test_create_quickvote_unprintable_description - assert_create_quickvote_succeeds ElectionStruct.new ({ + assert_create_quickvote_succeeds QuickVoteStruct.new ({ :name => "foobar", :description => "test \x01\x02\x03\x04\x05\x06\x07\x08", :candidate_names => ["Apple", "Orange", "Banana", "Pineapple"]}) end def test_quickvote_proper_results - assert_create_quickvote_succeeds ElectionStruct.new({ + assert_create_quickvote_succeeds QuickVoteStruct.new({ :name => "favdev", :description => "Who is your favorite developer?", :candidate_names => ["mako", "jdong", "justin"]})