From 37e11a698234dcc8bcb2faae7203088667a8a561 Mon Sep 17 00:00:00 2001 From: Benjamin Mako Hill Date: Wed, 17 Jun 2009 20:54:47 -0400 Subject: [PATCH] added new tests and fixtures --- test/fixtures/candidates.yml | 114 +- test/fixtures/elections.yml | 49 +- test/fixtures/rankings.yml | 3371 +++++++++++++++++- test/fixtures/vote.yml | 5 - test/fixtures/voters.yml | 268 +- test/fixtures/votes.yml | 199 ++ test/functional/quickvote_controller_test.rb | 48 +- test/unit/quickvote_test.rb | 116 +- test/unit/ranking_test.rb | 1 - test/unit/voter_test.rb | 1 - 10 files changed, 4070 insertions(+), 102 deletions(-) delete mode 100644 test/fixtures/vote.yml create mode 100644 test/fixtures/votes.yml diff --git a/test/fixtures/candidates.yml b/test/fixtures/candidates.yml index 4a651bf..4153b54 100644 --- a/test/fixtures/candidates.yml +++ b/test/fixtures/candidates.yml @@ -1,31 +1,87 @@ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html +<% i = 0 %> -mika_normal: - id: 1 - name: mika - election_id: 1 - -mako_normal: - id: 2 - name: mako - election_id: 1 - -bettamax_normal: - id: 3 - name: bettamax - election_id: 1 - -mika_badend: - id: 4 - name: mika - election_id: 2 - -mako_badend: - id: 5 - name: mako - election_id: 2 - -bettamax_badend: - id: 6 - name: bettamax - election_id: 2 +cand_<%= i += 1 %>: + name: "techno picnic" + election_id: "954" + id: "4666" + +cand_<%= i += 1 %>: + name: "History's Best Dictators" + election_id: "954" + id: "4667" + +cand_<%= i += 1 %>: + name: "Lolita" + election_id: "954" + id: "4668" + +cand_<%= i += 1 %>: + name: "Famous Murderers" + election_id: "954" + id: "4669" + +cand_<%= i += 1 %>: + name: "Eyes Wide Shut" + election_id: "954" + id: "4670" + +cand_<%= i += 1 %>: + name: "Famous Literature" + election_id: "954" + id: "4671" + +cand_<%= i += 1 %>: + name: "Solstice" + election_id: "954" + id: "4672" + +cand_<%= i += 1 %>: + name: "Rocky Horror" + election_id: "954" + id: "4673" + +cand_<%= i += 1 %>: + name: "Clothing Optional + Wine" + election_id: "954" + id: "4674" + +cand_<%= i += 1 %>: + name: "Kindergarden" + election_id: "954" + id: "4675" + +cand_<%= i += 1 %>: + name: "Antarctica" + election_id: "954" + id: "4676" + +cand_<%= i += 1 %>: + name: "Ender's Game" + election_id: "954" + id: "4677" + +cand_<%= i += 1 %>: + name: "Terry Pratchett's Discworld" + election_id: "954" + id: "4678" + +cand_<%= i += 1 %>: + name: "Soviet Russia" + election_id: "954" + id: "4679" + +cand_<%= i += 1 %>: + name: "Rejected Superheroes" + election_id: "954" + id: "4680" + +cand_<%= i += 1 %>: + name: "Steampunk" + election_id: "954" + id: "4681" + +cand_<%= i += 1 %>: + name: "In The Lab" + election_id: "954" + id: "4682" diff --git a/test/fixtures/elections.yml b/test/fixtures/elections.yml index 814540f..b90d221 100644 --- a/test/fixtures/elections.yml +++ b/test/fixtures/elections.yml @@ -1,22 +1,33 @@ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html quickvote_normal: - id: 1 - name: acetarium - description: who is the winner? - anonymous: 1 - startdate: 2007-08-22 12:00:00 - enddate: 2007-09-21 11:59:59 - active: 1 - type: QuickVote - election_method: ssd + id: 1 + name: acetarium + description: who is the winner? + anonymous: 1 + startdate: 2007-08-22 12:00:00 + enddate: 2010-09-21 11:59:59 + active: 1 + type: QuickVote + election_method: ssd + +quickvote_bernie: + id: 954 + kiosk: 0 + election_method: ssd + name: geekdomain + quickuser: "089f1ed263b01c73843b690799eddebb" + enddate: 2009-04-22 00:00:00 + verifiable: 0 + embed_custom_string: + anonymous: 1 + early_results: 0 + authenticated: 1 + type: QuickVote + user_id: + notices: 0 + description: Dominio per la mailing-list geek@ + embeddable: 0 + viewable: 0 + startdate: 2009-03-17 04:37:28 + active: 2 -quickvote_invalid_endtime: - id: 2 - name: acetarium2 - description: who is the winner? - anonymous: 1 - startdate: 2007-08-22 12:00:00 - enddate: 2003-09-21 11:59:59 - active: 1 - type: QuickVote - election_method: ssd diff --git a/test/fixtures/rankings.yml b/test/fixtures/rankings.yml index 8794d28..3f1c17f 100644 --- a/test/fixtures/rankings.yml +++ b/test/fixtures/rankings.yml @@ -1,5 +1,3368 @@ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html -first: - id: 1 -another: - id: 2 +<% i = 0 %> + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4678" + id: "222081" + vote_id: "29482" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4666" + id: "222080" + vote_id: "29482" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4674" + id: "222079" + vote_id: "29482" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4676" + id: "222078" + vote_id: "29482" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4668" + id: "222077" + vote_id: "29482" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4677" + id: "222076" + vote_id: "29482" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4671" + id: "222075" + vote_id: "29482" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4670" + id: "222074" + vote_id: "29482" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4675" + id: "222073" + vote_id: "29482" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4673" + id: "222072" + vote_id: "29482" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4672" + id: "222071" + vote_id: "29482" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4679" + id: "222070" + vote_id: "29482" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4681" + id: "222069" + vote_id: "29482" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4669" + id: "222068" + vote_id: "29482" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4682" + id: "222067" + vote_id: "29482" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4667" + id: "222066" + vote_id: "29482" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4680" + id: "222065" + vote_id: "29482" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4668" + id: "222198" + vote_id: "29494" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4681" + id: "222199" + vote_id: "29494" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4679" + id: "222200" + vote_id: "29494" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4673" + id: "222201" + vote_id: "29494" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4676" + id: "222202" + vote_id: "29494" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4674" + id: "222203" + vote_id: "29494" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4672" + id: "222204" + vote_id: "29494" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4680" + id: "222205" + vote_id: "29494" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4669" + id: "222206" + vote_id: "29494" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4678" + id: "222207" + vote_id: "29494" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4682" + id: "222208" + vote_id: "29494" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4670" + id: "222209" + vote_id: "29494" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4666" + id: "222210" + vote_id: "29494" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4677" + id: "222211" + vote_id: "29494" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4675" + id: "222212" + vote_id: "29494" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4671" + id: "222213" + vote_id: "29494" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4667" + id: "222214" + vote_id: "29494" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4669" + id: "222253" + vote_id: "29499" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4678" + id: "222254" + vote_id: "29499" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4676" + id: "222255" + vote_id: "29499" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4679" + id: "222256" + vote_id: "29499" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4670" + id: "222257" + vote_id: "29499" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4674" + id: "222258" + vote_id: "29499" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4675" + id: "222259" + vote_id: "29499" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4668" + id: "222260" + vote_id: "29499" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4682" + id: "222261" + vote_id: "29499" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4672" + id: "222262" + vote_id: "29499" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4680" + id: "222263" + vote_id: "29499" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4677" + id: "222264" + vote_id: "29499" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4673" + id: "222265" + vote_id: "29499" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4667" + id: "222266" + vote_id: "29499" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4681" + id: "222267" + vote_id: "29499" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4671" + id: "222268" + vote_id: "29499" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4666" + id: "222269" + vote_id: "29499" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4677" + id: "222389" + vote_id: "29519" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4667" + id: "222388" + vote_id: "29519" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4673" + id: "222387" + vote_id: "29519" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4670" + id: "222386" + vote_id: "29519" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4675" + id: "222385" + vote_id: "29519" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4678" + id: "222384" + vote_id: "29519" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4669" + id: "222383" + vote_id: "29519" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4681" + id: "222382" + vote_id: "29519" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4672" + id: "222381" + vote_id: "29519" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4671" + id: "222380" + vote_id: "29519" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4682" + id: "222379" + vote_id: "29519" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4668" + id: "222378" + vote_id: "29519" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4666" + id: "222377" + vote_id: "29519" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4676" + id: "222376" + vote_id: "29519" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4679" + id: "222375" + vote_id: "29519" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4680" + id: "222374" + vote_id: "29519" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4674" + id: "222373" + vote_id: "29519" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4666" + id: "222395" + vote_id: "29521" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4682" + id: "222396" + vote_id: "29521" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4673" + id: "222397" + vote_id: "29521" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4675" + id: "222398" + vote_id: "29521" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4679" + id: "222399" + vote_id: "29521" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4676" + id: "222400" + vote_id: "29521" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4677" + id: "222401" + vote_id: "29521" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4678" + id: "222402" + vote_id: "29521" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4672" + id: "222403" + vote_id: "29521" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4681" + id: "222404" + vote_id: "29521" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4668" + id: "222405" + vote_id: "29521" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4670" + id: "222406" + vote_id: "29521" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4674" + id: "222407" + vote_id: "29521" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4671" + id: "222408" + vote_id: "29521" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4667" + id: "222409" + vote_id: "29521" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4680" + id: "222410" + vote_id: "29521" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4669" + id: "222411" + vote_id: "29521" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4672" + id: "222453" + vote_id: "29522" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4670" + id: "222452" + vote_id: "29522" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4668" + id: "222451" + vote_id: "29522" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4682" + id: "222450" + vote_id: "29522" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4674" + id: "222449" + vote_id: "29522" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4671" + id: "222448" + vote_id: "29522" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4666" + id: "222447" + vote_id: "29522" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4678" + id: "222446" + vote_id: "29522" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4679" + id: "222445" + vote_id: "29522" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4676" + id: "222444" + vote_id: "29522" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4667" + id: "222443" + vote_id: "29522" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4669" + id: "222442" + vote_id: "29522" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4673" + id: "222441" + vote_id: "29522" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4675" + id: "222440" + vote_id: "29522" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4681" + id: "222439" + vote_id: "29522" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4680" + id: "222438" + vote_id: "29522" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4677" + id: "222437" + vote_id: "29522" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4667" + id: "222454" + vote_id: "29524" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4676" + id: "222455" + vote_id: "29524" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4670" + id: "222456" + vote_id: "29524" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4671" + id: "222457" + vote_id: "29524" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4677" + id: "222458" + vote_id: "29524" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4672" + id: "222459" + vote_id: "29524" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4679" + id: "222460" + vote_id: "29524" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4674" + id: "222461" + vote_id: "29524" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4675" + id: "222462" + vote_id: "29524" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4682" + id: "222463" + vote_id: "29524" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4681" + id: "222464" + vote_id: "29524" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4680" + id: "222465" + vote_id: "29524" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4673" + id: "222466" + vote_id: "29524" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4669" + id: "222467" + vote_id: "29524" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4666" + id: "222468" + vote_id: "29524" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4678" + id: "222469" + vote_id: "29524" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4668" + id: "222470" + vote_id: "29524" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4674" + id: "222506" + vote_id: "29526" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4673" + id: "222505" + vote_id: "29526" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4680" + id: "222504" + vote_id: "29526" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4666" + id: "222503" + vote_id: "29526" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4675" + id: "222502" + vote_id: "29526" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4669" + id: "222501" + vote_id: "29526" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4677" + id: "222500" + vote_id: "29526" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4678" + id: "222499" + vote_id: "29526" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4667" + id: "222498" + vote_id: "29526" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4679" + id: "222497" + vote_id: "29526" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4682" + id: "222496" + vote_id: "29526" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4671" + id: "222495" + vote_id: "29526" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4672" + id: "222494" + vote_id: "29526" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4670" + id: "222493" + vote_id: "29526" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4681" + id: "222492" + vote_id: "29526" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4676" + id: "222491" + vote_id: "29526" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4668" + id: "222490" + vote_id: "29526" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4673" + id: "222543" + vote_id: "29527" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4681" + id: "222542" + vote_id: "29527" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4678" + id: "222541" + vote_id: "29527" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4676" + id: "222540" + vote_id: "29527" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4670" + id: "222539" + vote_id: "29527" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4674" + id: "222538" + vote_id: "29527" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4668" + id: "222537" + vote_id: "29527" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4675" + id: "222536" + vote_id: "29527" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4672" + id: "222535" + vote_id: "29527" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4669" + id: "222534" + vote_id: "29527" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4677" + id: "222533" + vote_id: "29527" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4679" + id: "222532" + vote_id: "29527" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4680" + id: "222531" + vote_id: "29527" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4667" + id: "222530" + vote_id: "29527" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4682" + id: "222529" + vote_id: "29527" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4666" + id: "222528" + vote_id: "29527" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4671" + id: "222527" + vote_id: "29527" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4675" + id: "222544" + vote_id: "29529" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4674" + id: "222545" + vote_id: "29529" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4666" + id: "222546" + vote_id: "29529" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4672" + id: "222547" + vote_id: "29529" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4680" + id: "222548" + vote_id: "29529" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4677" + id: "222549" + vote_id: "29529" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4673" + id: "222550" + vote_id: "29529" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4670" + id: "222551" + vote_id: "29529" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4671" + id: "222552" + vote_id: "29529" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4669" + id: "222553" + vote_id: "29529" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4678" + id: "222554" + vote_id: "29529" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4681" + id: "222555" + vote_id: "29529" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4682" + id: "222556" + vote_id: "29529" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4668" + id: "222557" + vote_id: "29529" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4679" + id: "222558" + vote_id: "29529" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4676" + id: "222559" + vote_id: "29529" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4667" + id: "222560" + vote_id: "29529" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4675" + id: "222561" + vote_id: "29530" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4666" + id: "222562" + vote_id: "29530" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4669" + id: "222563" + vote_id: "29530" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4681" + id: "222564" + vote_id: "29530" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4668" + id: "222565" + vote_id: "29530" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4680" + id: "222566" + vote_id: "29530" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4674" + id: "222567" + vote_id: "29530" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4670" + id: "222568" + vote_id: "29530" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4667" + id: "222569" + vote_id: "29530" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4678" + id: "222570" + vote_id: "29530" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4676" + id: "222571" + vote_id: "29530" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4671" + id: "222572" + vote_id: "29530" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4677" + id: "222573" + vote_id: "29530" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4673" + id: "222574" + vote_id: "29530" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4672" + id: "222575" + vote_id: "29530" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4682" + id: "222576" + vote_id: "29530" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4679" + id: "222577" + vote_id: "29530" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4668" + id: "222584" + vote_id: "29533" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4682" + id: "222585" + vote_id: "29533" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4680" + id: "222586" + vote_id: "29533" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4669" + id: "222587" + vote_id: "29533" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4675" + id: "222588" + vote_id: "29533" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4671" + id: "222589" + vote_id: "29533" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4667" + id: "222590" + vote_id: "29533" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4676" + id: "222591" + vote_id: "29533" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4670" + id: "222592" + vote_id: "29533" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4666" + id: "222593" + vote_id: "29533" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4674" + id: "222594" + vote_id: "29533" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4672" + id: "222595" + vote_id: "29533" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4673" + id: "222596" + vote_id: "29533" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4681" + id: "222597" + vote_id: "29533" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4679" + id: "222598" + vote_id: "29533" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4678" + id: "222599" + vote_id: "29533" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4677" + id: "222600" + vote_id: "29533" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4678" + id: "222637" + vote_id: "29535" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4672" + id: "222636" + vote_id: "29535" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4669" + id: "222635" + vote_id: "29535" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4676" + id: "222634" + vote_id: "29535" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4675" + id: "222633" + vote_id: "29535" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4682" + id: "222632" + vote_id: "29535" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4679" + id: "222631" + vote_id: "29535" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4666" + id: "222630" + vote_id: "29535" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4673" + id: "222629" + vote_id: "29535" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4667" + id: "222628" + vote_id: "29535" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4668" + id: "222627" + vote_id: "29535" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4671" + id: "222626" + vote_id: "29535" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4681" + id: "222625" + vote_id: "29535" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4680" + id: "222624" + vote_id: "29535" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4677" + id: "222623" + vote_id: "29535" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4670" + id: "222622" + vote_id: "29535" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4674" + id: "222621" + vote_id: "29535" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4669" + id: "222673" + vote_id: "29537" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4672" + id: "222672" + vote_id: "29537" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4666" + id: "222671" + vote_id: "29537" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4673" + id: "222670" + vote_id: "29537" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4682" + id: "222669" + vote_id: "29537" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4674" + id: "222668" + vote_id: "29537" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4679" + id: "222667" + vote_id: "29537" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4678" + id: "222665" + vote_id: "29537" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4667" + id: "222664" + vote_id: "29537" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4676" + id: "222663" + vote_id: "29537" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4668" + id: "222662" + vote_id: "29537" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4677" + id: "222661" + vote_id: "29537" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4671" + id: "222660" + vote_id: "29537" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4670" + id: "222658" + vote_id: "29537" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4681" + id: "222657" + vote_id: "29537" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4675" + id: "222674" + vote_id: "29537" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4680" + id: "222675" + vote_id: "29537" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4675" + id: "222743" + vote_id: "29539" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4668" + id: "222742" + vote_id: "29539" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4676" + id: "222741" + vote_id: "29539" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4678" + id: "222740" + vote_id: "29539" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4681" + id: "222739" + vote_id: "29539" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4677" + id: "222738" + vote_id: "29539" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4673" + id: "222737" + vote_id: "29539" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4672" + id: "222736" + vote_id: "29539" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4669" + id: "222735" + vote_id: "29539" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4682" + id: "222734" + vote_id: "29539" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4679" + id: "222733" + vote_id: "29539" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4667" + id: "222732" + vote_id: "29539" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4674" + id: "222731" + vote_id: "29539" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4671" + id: "222730" + vote_id: "29539" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4670" + id: "222729" + vote_id: "29539" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4680" + id: "222728" + vote_id: "29539" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4666" + id: "222727" + vote_id: "29539" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4675" + id: "222726" + vote_id: "29540" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4679" + id: "222725" + vote_id: "29540" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4677" + id: "222724" + vote_id: "29540" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4667" + id: "222723" + vote_id: "29540" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4674" + id: "222722" + vote_id: "29540" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4680" + id: "222721" + vote_id: "29540" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4672" + id: "222720" + vote_id: "29540" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4682" + id: "222719" + vote_id: "29540" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4676" + id: "222718" + vote_id: "29540" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4666" + id: "222717" + vote_id: "29540" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4669" + id: "222716" + vote_id: "29540" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4673" + id: "222715" + vote_id: "29540" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4671" + id: "222714" + vote_id: "29540" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4668" + id: "222713" + vote_id: "29540" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4670" + id: "222712" + vote_id: "29540" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4678" + id: "222711" + vote_id: "29540" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4681" + id: "222710" + vote_id: "29540" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4673" + id: "222777" + vote_id: "29541" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4674" + id: "222776" + vote_id: "29541" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4669" + id: "222775" + vote_id: "29541" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4678" + id: "222774" + vote_id: "29541" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4666" + id: "222773" + vote_id: "29541" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4668" + id: "222772" + vote_id: "29541" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4670" + id: "222771" + vote_id: "29541" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4681" + id: "222770" + vote_id: "29541" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4677" + id: "222769" + vote_id: "29541" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4682" + id: "222768" + vote_id: "29541" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4671" + id: "222767" + vote_id: "29541" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4676" + id: "222766" + vote_id: "29541" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4672" + id: "222765" + vote_id: "29541" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4679" + id: "222764" + vote_id: "29541" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4675" + id: "222763" + vote_id: "29541" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4667" + id: "222762" + vote_id: "29541" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4680" + id: "222761" + vote_id: "29541" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4678" + id: "222811" + vote_id: "29542" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4681" + id: "222810" + vote_id: "29542" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4682" + id: "222809" + vote_id: "29542" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4677" + id: "222808" + vote_id: "29542" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4672" + id: "222807" + vote_id: "29542" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4670" + id: "222806" + vote_id: "29542" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4673" + id: "222805" + vote_id: "29542" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4666" + id: "222804" + vote_id: "29542" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4669" + id: "222803" + vote_id: "29542" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4667" + id: "222802" + vote_id: "29542" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4675" + id: "222801" + vote_id: "29542" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4671" + id: "222800" + vote_id: "29542" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4680" + id: "222799" + vote_id: "29542" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4676" + id: "222798" + vote_id: "29542" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4679" + id: "222797" + vote_id: "29542" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4674" + id: "222796" + vote_id: "29542" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4668" + id: "222795" + vote_id: "29542" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4674" + id: "222845" + vote_id: "29543" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4673" + id: "222844" + vote_id: "29543" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4667" + id: "222843" + vote_id: "29543" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4669" + id: "222842" + vote_id: "29543" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4679" + id: "222841" + vote_id: "29543" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4672" + id: "222840" + vote_id: "29543" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4676" + id: "222839" + vote_id: "29543" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4675" + id: "222838" + vote_id: "29543" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4678" + id: "222837" + vote_id: "29543" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4668" + id: "222836" + vote_id: "29543" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4670" + id: "222835" + vote_id: "29543" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4680" + id: "222834" + vote_id: "29543" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4677" + id: "222833" + vote_id: "29543" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4666" + id: "222832" + vote_id: "29543" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4681" + id: "222831" + vote_id: "29543" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4682" + id: "222830" + vote_id: "29543" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4671" + id: "222829" + vote_id: "29543" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4676" + id: "222846" + vote_id: "29544" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4674" + id: "222847" + vote_id: "29544" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4682" + id: "222848" + vote_id: "29544" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4677" + id: "222849" + vote_id: "29544" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4678" + id: "222850" + vote_id: "29544" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4672" + id: "222851" + vote_id: "29544" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4671" + id: "222852" + vote_id: "29544" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4670" + id: "222853" + vote_id: "29544" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4666" + id: "222854" + vote_id: "29544" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4679" + id: "222855" + vote_id: "29544" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4673" + id: "222856" + vote_id: "29544" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4669" + id: "222857" + vote_id: "29544" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4668" + id: "222858" + vote_id: "29544" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4680" + id: "222859" + vote_id: "29544" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4667" + id: "222860" + vote_id: "29544" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4681" + id: "222861" + vote_id: "29544" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4675" + id: "222862" + vote_id: "29544" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4675" + id: "222896" + vote_id: "29545" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4677" + id: "222895" + vote_id: "29545" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4667" + id: "222894" + vote_id: "29545" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4672" + id: "222893" + vote_id: "29545" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4679" + id: "222892" + vote_id: "29545" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4673" + id: "222891" + vote_id: "29545" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4678" + id: "222890" + vote_id: "29545" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4669" + id: "222889" + vote_id: "29545" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4668" + id: "222888" + vote_id: "29545" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4670" + id: "222887" + vote_id: "29545" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4680" + id: "222886" + vote_id: "29545" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4676" + id: "222885" + vote_id: "29545" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4674" + id: "222884" + vote_id: "29545" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4682" + id: "222883" + vote_id: "29545" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4671" + id: "222882" + vote_id: "29545" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4681" + id: "222881" + vote_id: "29545" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4666" + id: "222880" + vote_id: "29545" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4678" + id: "222930" + vote_id: "29546" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4666" + id: "222929" + vote_id: "29546" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4675" + id: "222928" + vote_id: "29546" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4681" + id: "222927" + vote_id: "29546" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4672" + id: "222926" + vote_id: "29546" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4671" + id: "222925" + vote_id: "29546" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4670" + id: "222924" + vote_id: "29546" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4673" + id: "222923" + vote_id: "29546" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4668" + id: "222922" + vote_id: "29546" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4682" + id: "222921" + vote_id: "29546" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4680" + id: "222920" + vote_id: "29546" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4676" + id: "222919" + vote_id: "29546" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4669" + id: "222918" + vote_id: "29546" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4667" + id: "222917" + vote_id: "29546" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4679" + id: "222916" + vote_id: "29546" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4674" + id: "222915" + vote_id: "29546" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4677" + id: "222914" + vote_id: "29546" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4667" + id: "222931" + vote_id: "29547" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4672" + id: "222932" + vote_id: "29547" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4669" + id: "222933" + vote_id: "29547" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4679" + id: "222934" + vote_id: "29547" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4673" + id: "222935" + vote_id: "29547" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4678" + id: "222936" + vote_id: "29547" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4680" + id: "222937" + vote_id: "29547" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4681" + id: "222938" + vote_id: "29547" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4675" + id: "222939" + vote_id: "29547" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4666" + id: "222940" + vote_id: "29547" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4668" + id: "222941" + vote_id: "29547" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4676" + id: "222942" + vote_id: "29547" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4670" + id: "222943" + vote_id: "29547" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4671" + id: "222944" + vote_id: "29547" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4682" + id: "222945" + vote_id: "29547" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4677" + id: "222946" + vote_id: "29547" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4674" + id: "222947" + vote_id: "29547" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4667" + id: "223057" + vote_id: "29552" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4674" + id: "223056" + vote_id: "29552" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4682" + id: "223055" + vote_id: "29552" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4679" + id: "223054" + vote_id: "29552" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4670" + id: "223053" + vote_id: "29552" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4678" + id: "223052" + vote_id: "29552" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4671" + id: "223051" + vote_id: "29552" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4675" + id: "223050" + vote_id: "29552" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4677" + id: "223049" + vote_id: "29552" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4669" + id: "223048" + vote_id: "29552" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4666" + id: "223047" + vote_id: "29552" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4680" + id: "223046" + vote_id: "29552" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4668" + id: "223045" + vote_id: "29552" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4673" + id: "223044" + vote_id: "29552" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4681" + id: "223043" + vote_id: "29552" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4672" + id: "223042" + vote_id: "29552" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4676" + id: "223041" + vote_id: "29552" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4667" + id: "222965" + vote_id: "29549" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4671" + id: "222966" + vote_id: "29549" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4666" + id: "222967" + vote_id: "29549" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4668" + id: "222968" + vote_id: "29549" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4680" + id: "222969" + vote_id: "29549" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4676" + id: "222970" + vote_id: "29549" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4674" + id: "222971" + vote_id: "29549" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4681" + id: "222972" + vote_id: "29549" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4682" + id: "222973" + vote_id: "29549" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4672" + id: "222974" + vote_id: "29549" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4678" + id: "222975" + vote_id: "29549" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4673" + id: "222976" + vote_id: "29549" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4679" + id: "222977" + vote_id: "29549" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4669" + id: "222978" + vote_id: "29549" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4670" + id: "222979" + vote_id: "29549" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4675" + id: "222980" + vote_id: "29549" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4677" + id: "222981" + vote_id: "29549" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4678" + id: "223023" + vote_id: "29551" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4675" + id: "223022" + vote_id: "29551" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4672" + id: "223021" + vote_id: "29551" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4666" + id: "223020" + vote_id: "29551" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4676" + id: "223019" + vote_id: "29551" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4667" + id: "223018" + vote_id: "29551" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4671" + id: "223017" + vote_id: "29551" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4677" + id: "223016" + vote_id: "29551" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4669" + id: "223015" + vote_id: "29551" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4680" + id: "223014" + vote_id: "29551" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4681" + id: "223013" + vote_id: "29551" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4682" + id: "223012" + vote_id: "29551" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4679" + id: "223011" + vote_id: "29551" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4674" + id: "223010" + vote_id: "29551" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4670" + id: "223009" + vote_id: "29551" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4668" + id: "223008" + vote_id: "29551" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4673" + id: "223007" + vote_id: "29551" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4674" + id: "223094" + vote_id: "29553" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4669" + id: "223093" + vote_id: "29553" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4667" + id: "223092" + vote_id: "29553" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4682" + id: "223091" + vote_id: "29553" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4672" + id: "223090" + vote_id: "29553" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4678" + id: "223089" + vote_id: "29553" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4670" + id: "223088" + vote_id: "29553" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4676" + id: "223087" + vote_id: "29553" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4679" + id: "223086" + vote_id: "29553" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4675" + id: "223085" + vote_id: "29553" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4677" + id: "223084" + vote_id: "29553" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4671" + id: "223083" + vote_id: "29553" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4666" + id: "223082" + vote_id: "29553" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4673" + id: "223081" + vote_id: "29553" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4680" + id: "223080" + vote_id: "29553" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4681" + id: "223079" + vote_id: "29553" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4668" + id: "223078" + vote_id: "29553" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4672" + id: "223095" + vote_id: "29555" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4673" + id: "223096" + vote_id: "29555" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4681" + id: "223097" + vote_id: "29555" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4667" + id: "223098" + vote_id: "29555" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4679" + id: "223099" + vote_id: "29555" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4677" + id: "223100" + vote_id: "29555" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4678" + id: "223101" + vote_id: "29555" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4669" + id: "223102" + vote_id: "29555" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4666" + id: "223103" + vote_id: "29555" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4675" + id: "223104" + vote_id: "29555" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4682" + id: "223105" + vote_id: "29555" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4674" + id: "223106" + vote_id: "29555" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4671" + id: "223107" + vote_id: "29555" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4676" + id: "223108" + vote_id: "29555" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4680" + id: "223109" + vote_id: "29555" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4668" + id: "223110" + vote_id: "29555" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4670" + id: "223111" + vote_id: "29555" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4674" + id: "223157" + vote_id: "29560" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4670" + id: "223156" + vote_id: "29560" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4668" + id: "223155" + vote_id: "29560" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4673" + id: "223154" + vote_id: "29560" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4671" + id: "223153" + vote_id: "29560" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4669" + id: "223152" + vote_id: "29560" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4676" + id: "223151" + vote_id: "29560" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4666" + id: "223150" + vote_id: "29560" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4672" + id: "223149" + vote_id: "29560" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4667" + id: "223148" + vote_id: "29560" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4679" + id: "223147" + vote_id: "29560" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4678" + id: "223146" + vote_id: "29560" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4682" + id: "223145" + vote_id: "29560" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4681" + id: "223144" + vote_id: "29560" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4677" + id: "223143" + vote_id: "29560" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4675" + id: "223142" + vote_id: "29560" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4680" + id: "223141" + vote_id: "29560" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4667" + id: "223236" + vote_id: "29580" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4671" + id: "223237" + vote_id: "29580" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4666" + id: "223238" + vote_id: "29580" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4682" + id: "223239" + vote_id: "29580" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4678" + id: "223240" + vote_id: "29580" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4670" + id: "223241" + vote_id: "29580" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4680" + id: "223242" + vote_id: "29580" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4681" + id: "223243" + vote_id: "29580" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4672" + id: "223244" + vote_id: "29580" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4677" + id: "223245" + vote_id: "29580" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4669" + id: "223246" + vote_id: "29580" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4668" + id: "223247" + vote_id: "29580" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4679" + id: "223248" + vote_id: "29580" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4673" + id: "223249" + vote_id: "29580" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4676" + id: "223250" + vote_id: "29580" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4675" + id: "223251" + vote_id: "29580" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4674" + id: "223252" + vote_id: "29580" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4674" + id: "223666" + vote_id: "29644" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4668" + id: "223665" + vote_id: "29644" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4677" + id: "223664" + vote_id: "29644" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4672" + id: "223663" + vote_id: "29644" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4678" + id: "223662" + vote_id: "29644" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4679" + id: "223661" + vote_id: "29644" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4669" + id: "223660" + vote_id: "29644" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4670" + id: "223659" + vote_id: "29644" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4673" + id: "223658" + vote_id: "29644" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4671" + id: "223657" + vote_id: "29644" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4667" + id: "223656" + vote_id: "29644" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4676" + id: "223655" + vote_id: "29644" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4681" + id: "223654" + vote_id: "29644" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4666" + id: "223653" + vote_id: "29644" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4675" + id: "223652" + vote_id: "29644" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4682" + id: "223651" + vote_id: "29644" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4680" + id: "223650" + vote_id: "29644" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4679" + id: "224576" + vote_id: "29792" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4676" + id: "224577" + vote_id: "29792" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4678" + id: "224578" + vote_id: "29792" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4667" + id: "224579" + vote_id: "29792" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4671" + id: "224580" + vote_id: "29792" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4669" + id: "224581" + vote_id: "29792" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4673" + id: "224582" + vote_id: "29792" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4672" + id: "224583" + vote_id: "29792" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4682" + id: "224584" + vote_id: "29792" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4677" + id: "224585" + vote_id: "29792" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4666" + id: "224586" + vote_id: "29792" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4668" + id: "224587" + vote_id: "29792" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4681" + id: "224588" + vote_id: "29792" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4674" + id: "224589" + vote_id: "29792" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4670" + id: "224590" + vote_id: "29792" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4675" + id: "224591" + vote_id: "29792" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4680" + id: "224592" + vote_id: "29792" + +ranking_<%= i += 1 %>: + rank: "1" + candidate_id: "4673" + id: "226664" + vote_id: "30188" + +ranking_<%= i += 1 %>: + rank: "2" + candidate_id: "4679" + id: "226665" + vote_id: "30188" + +ranking_<%= i += 1 %>: + rank: "3" + candidate_id: "4677" + id: "226666" + vote_id: "30188" + +ranking_<%= i += 1 %>: + rank: "4" + candidate_id: "4680" + id: "226667" + vote_id: "30188" + +ranking_<%= i += 1 %>: + rank: "5" + candidate_id: "4674" + id: "226668" + vote_id: "30188" + +ranking_<%= i += 1 %>: + rank: "6" + candidate_id: "4669" + id: "226669" + vote_id: "30188" + +ranking_<%= i += 1 %>: + rank: "7" + candidate_id: "4676" + id: "226670" + vote_id: "30188" + +ranking_<%= i += 1 %>: + rank: "8" + candidate_id: "4671" + id: "226671" + vote_id: "30188" + +ranking_<%= i += 1 %>: + rank: "9" + candidate_id: "4670" + id: "226672" + vote_id: "30188" + +ranking_<%= i += 1 %>: + rank: "10" + candidate_id: "4682" + id: "226673" + vote_id: "30188" + +ranking_<%= i += 1 %>: + rank: "11" + candidate_id: "4678" + id: "226674" + vote_id: "30188" + +ranking_<%= i += 1 %>: + rank: "12" + candidate_id: "4667" + id: "226675" + vote_id: "30188" + +ranking_<%= i += 1 %>: + rank: "13" + candidate_id: "4672" + id: "226676" + vote_id: "30188" + +ranking_<%= i += 1 %>: + rank: "14" + candidate_id: "4675" + id: "226677" + vote_id: "30188" + +ranking_<%= i += 1 %>: + rank: "15" + candidate_id: "4681" + id: "226678" + vote_id: "30188" + +ranking_<%= i += 1 %>: + rank: "16" + candidate_id: "4668" + id: "226679" + vote_id: "30188" + +ranking_<%= i += 1 %>: + rank: "17" + candidate_id: "4666" + id: "226680" + vote_id: "30188" diff --git a/test/fixtures/vote.yml b/test/fixtures/vote.yml deleted file mode 100644 index 8794d28..0000000 --- a/test/fixtures/vote.yml +++ /dev/null @@ -1,5 +0,0 @@ -# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html -first: - id: 1 -another: - id: 2 diff --git a/test/fixtures/voters.yml b/test/fixtures/voters.yml index 8794d28..83b4085 100644 --- a/test/fixtures/voters.yml +++ b/test/fixtures/voters.yml @@ -1,5 +1,265 @@ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html -first: - id: 1 -another: - id: 2 +voter_29695: + contacted: "0" + ipaddress: 127.0.0.1 + election_id: "954" + session_id: "041423d72227d3c1f8e3fd7ccddb1b55" + id: "29695" + type: QuickVoter + +voter_29705: + contacted: "0" + ipaddress: + election_id: "954" + session_id: "d9e093e70c29f1c6ded0e3f29f6f9980" + id: "29705" + type: QuickVoter + +voter_29710: + contacted: "0" + ipaddress: + election_id: "954" + session_id: "5e9cce6c013b12989c603ad5d83de02c" + id: "29710" + type: QuickVoter + +voter_29730: + contacted: "0" + ipaddress: 127.0.0.1 + election_id: "954" + session_id: "2dc792d3b13d68919d2ddd84b3749791" + id: "29730" + type: QuickVoter + +voter_29732: + contacted: "0" + ipaddress: + election_id: "954" + session_id: "e96f1ec33c8b5acbd5d2295803bc422c" + id: "29732" + type: QuickVoter + +voter_29733: + contacted: "0" + ipaddress: 127.0.0.1 + election_id: "954" + session_id: "e375b4f9a39f53a18bb9283ac0a731d5" + id: "29733" + type: QuickVoter + +voter_29735: + contacted: "0" + ipaddress: + election_id: "954" + session_id: "281a8d479a5e81af88abaaac1110b023" + id: "29735" + type: QuickVoter + +voter_29737: + contacted: "0" + ipaddress: 127.0.0.1 + election_id: "954" + session_id: "939c97e84825aabb8d0ae5e972f8809d" + id: "29737" + type: QuickVoter + +voter_29738: + contacted: "0" + ipaddress: 127.0.0.1 + election_id: "954" + session_id: "b0a3bc6837f86d3f07a25024e5220e41" + id: "29738" + type: QuickVoter + +voter_29740: + contacted: "0" + ipaddress: + election_id: "954" + session_id: "6e2872cb332f06f5ca2c91d414f8e8c8" + id: "29740" + type: QuickVoter + +voter_29741: + contacted: "0" + ipaddress: + election_id: "954" + session_id: "d113128343272b6a87e1fc06d6b34962" + id: "29741" + type: QuickVoter + +voter_29744: + contacted: "0" + ipaddress: + election_id: "954" + session_id: "39a8b55ef384f17fc03988432cecd15d" + id: "29744" + type: QuickVoter + +voter_29746: + contacted: "0" + ipaddress: 127.0.0.1 + election_id: "954" + session_id: "dda7c0cbefde0ae8a0aebd3315fb1393" + id: "29746" + type: QuickVoter + +voter_29748: + contacted: "0" + ipaddress: 127.0.0.1 + election_id: "954" + session_id: "579b757b3b7749f9ba8e339b1cfd55fb" + id: "29748" + type: QuickVoter + +voter_29750: + contacted: "0" + ipaddress: 127.0.0.1 + election_id: "954" + session_id: "a2f8650c070fa02b4ca7ce9adfa4d930" + id: "29750" + type: QuickVoter + +voter_29751: + contacted: "0" + ipaddress: 127.0.0.1 + election_id: "954" + session_id: "6c517b4a8c4b81418893a6be196f7a7a" + id: "29751" + type: QuickVoter + +voter_29752: + contacted: "0" + ipaddress: 127.0.0.1 + election_id: "954" + session_id: "43b589f18c485a59f0f055854badd258" + id: "29752" + type: QuickVoter + +voter_29753: + contacted: "0" + ipaddress: 127.0.0.1 + election_id: "954" + session_id: "54437209bd8b5328eaf61e3b1f5bea6a" + id: "29753" + type: QuickVoter + +voter_29754: + contacted: "0" + ipaddress: 127.0.0.1 + election_id: "954" + session_id: "b324c244725192c82cc37e01ba1c07fa" + id: "29754" + type: QuickVoter + +voter_29755: + contacted: "0" + ipaddress: + election_id: "954" + session_id: "f60ad9b7d5cd915733f0a58301ce30c5" + id: "29755" + type: QuickVoter + +voter_29756: + contacted: "0" + ipaddress: 127.0.0.1 + election_id: "954" + session_id: "ea40b2a8ea7c3dfb1647f871d6b0b4a6" + id: "29756" + type: QuickVoter + +voter_29757: + contacted: "0" + ipaddress: 127.0.0.1 + election_id: "954" + session_id: "47091f1cf0aace51271aa32eea9a88ff" + id: "29757" + type: QuickVoter + +voter_29758: + contacted: "0" + ipaddress: + election_id: "954" + session_id: "915decad16ed54111139c53de074621b" + id: "29758" + type: QuickVoter + +voter_29763: + contacted: "0" + ipaddress: 127.0.0.1 + election_id: "954" + session_id: "6935e1eaf0e1956f33f95050690d587b" + id: "29763" + type: QuickVoter + +voter_29760: + contacted: "0" + ipaddress: + election_id: "954" + session_id: "60d1e174f8860f0fb22999aab28c6e2d" + id: "29760" + type: QuickVoter + +voter_29762: + contacted: "0" + ipaddress: 127.0.0.1 + election_id: "954" + session_id: "16c51c17d042041f9f593c437001444b" + id: "29762" + type: QuickVoter + +voter_29764: + contacted: "0" + ipaddress: 127.0.0.1 + election_id: "954" + session_id: "ff39bdbb7c485a146f2cf33efd3f6302" + id: "29764" + type: QuickVoter + +voter_29766: + contacted: "0" + ipaddress: + election_id: "954" + session_id: "8d386d68158d776d8010dceeeb13cb23" + id: "29766" + type: QuickVoter + +voter_29771: + contacted: "0" + ipaddress: 127.0.0.1 + election_id: "954" + session_id: "83c8dc25e93a6d931817d270973aa087" + id: "29771" + type: QuickVoter + +voter_29791: + contacted: "0" + ipaddress: + election_id: "954" + session_id: "a5d0e46cd73b1e105fe6ff89cfbf4600" + id: "29791" + type: QuickVoter + +voter_29855: + contacted: "0" + ipaddress: 127.0.0.1 + election_id: "954" + session_id: "79dd005a4e95f729c1fdf90fa03e5b18" + id: "29855" + type: QuickVoter + +voter_30003: + contacted: "0" + ipaddress: + election_id: "954" + session_id: "2b2afa6f59bb0fbf967627561a596c38" + id: "30003" + type: QuickVoter + +voter_30399: + contacted: "0" + ipaddress: + election_id: "954" + session_id: "747262cccc21f46dfcc24d72425f053c" + id: "30399" + type: QuickVoter + diff --git a/test/fixtures/votes.yml b/test/fixtures/votes.yml new file mode 100644 index 0000000..754519a --- /dev/null +++ b/test/fixtures/votes.yml @@ -0,0 +1,199 @@ +# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html +vote_29482: + voter_id: "29695" + confirmed: "1" + time: 2009-05-30 13:37:27 + id: "29482" + +vote_29494: + voter_id: "29705" + confirmed: "0" + time: + id: "29494" + +vote_29499: + voter_id: "29710" + confirmed: "0" + time: + id: "29499" + +vote_29519: + voter_id: "29730" + confirmed: "1" + time: 2009-05-31 12:35:06 + id: "29519" + +vote_29521: + voter_id: "29732" + confirmed: "0" + time: + id: "29521" + +vote_29522: + voter_id: "29733" + confirmed: "1" + time: 2009-05-31 14:27:44 + id: "29522" + +vote_29524: + voter_id: "29735" + confirmed: "0" + time: + id: "29524" + +vote_29526: + voter_id: "29737" + confirmed: "1" + time: 2009-05-31 14:33:20 + id: "29526" + +vote_29527: + voter_id: "29738" + confirmed: "1" + time: 2009-05-31 14:37:09 + id: "29527" + +vote_29529: + voter_id: "29740" + confirmed: "0" + time: + id: "29529" + +vote_29530: + voter_id: "29741" + confirmed: "0" + time: + id: "29530" + +vote_29533: + voter_id: "29744" + confirmed: "0" + time: + id: "29533" + +vote_29535: + voter_id: "29746" + confirmed: "1" + time: 2009-05-31 15:04:01 + id: "29535" + +vote_29537: + voter_id: "29748" + confirmed: "1" + time: 2009-05-31 15:06:08 + id: "29537" + +vote_29539: + voter_id: "29750" + confirmed: "1" + time: 2009-05-31 15:09:43 + id: "29539" + +vote_29540: + voter_id: "29751" + confirmed: "1" + time: 2009-05-31 15:08:21 + id: "29540" + +vote_29541: + voter_id: "29752" + confirmed: "1" + time: 2009-05-31 15:13:36 + id: "29541" + +vote_29542: + voter_id: "29753" + confirmed: "1" + time: 2009-05-31 15:18:15 + id: "29542" + +vote_29543: + voter_id: "29754" + confirmed: "1" + time: 2009-05-31 15:52:37 + id: "29543" + +vote_29544: + voter_id: "29755" + confirmed: "0" + time: + id: "29544" + +vote_29545: + voter_id: "29756" + confirmed: "1" + time: 2009-05-31 16:11:51 + id: "29545" + +vote_29546: + voter_id: "29757" + confirmed: "1" + time: 2009-05-31 16:50:38 + id: "29546" + +vote_29547: + voter_id: "29758" + confirmed: "0" + time: + id: "29547" + +vote_29552: + voter_id: "29763" + confirmed: "1" + time: 2009-05-31 17:54:15 + id: "29552" + +vote_29549: + voter_id: "29760" + confirmed: "0" + time: + id: "29549" + +vote_29551: + voter_id: "29762" + confirmed: "1" + time: 2009-05-31 17:46:23 + id: "29551" + +vote_29553: + voter_id: "29764" + confirmed: "1" + time: 2009-05-31 18:16:57 + id: "29553" + +vote_29555: + voter_id: "29766" + confirmed: "0" + time: + id: "29555" + +vote_29560: + voter_id: "29771" + confirmed: "1" + time: 2009-05-31 19:52:38 + id: "29560" + +vote_29580: + voter_id: "29791" + confirmed: "0" + time: + id: "29580" + +vote_29644: + voter_id: "29855" + confirmed: "1" + time: 2009-06-01 21:41:20 + id: "29644" + +vote_29792: + voter_id: "30003" + confirmed: "0" + time: + id: "29792" + +vote_30188: + voter_id: "30399" + confirmed: "0" + time: + id: "30188" + diff --git a/test/functional/quickvote_controller_test.rb b/test/functional/quickvote_controller_test.rb index e116c0d..65dfa2a 100644 --- a/test/functional/quickvote_controller_test.rb +++ b/test/functional/quickvote_controller_test.rb @@ -21,41 +21,55 @@ class QuickvoteControllerTest < Test::Unit::TestCase @response = ActionController::TestResponse.new end - # Replace this with your real tests. def test_index get :index assert_response 302 end def test_create_quickvote - post(:create, {'commit' =>"Create Quickvote", 'quickvote' =>{'name' =>"variable", 'description' =>"Favorite variable."}}, nil, {:candidate_names=>["foo", "bar", "foobar"]}) + post(:create, {'commit' =>"Create Quickvote", + 'quickvote' =>{'name' =>"variable", 'description' =>"Favorite variable."}}, + nil, {:candidate_names=>["foo", "bar", "foobar"]}) assert_template "quickvote/success" get :index, { 'ident' => "variable"} assert_response :success end - def test_create_dupe_quickvote - test_create_quickvote - assert_raise(Test::Unit::AssertionFailedError) do - test_create_quickvote - end - end + #def test_create_dupe_quickvote + # test_create_quickvote + # assert_raise(Test::Unit::AssertionFailedError) do + # test_create_quickvote + # end + #end def test_create_quickvote_badname - post(:create, {'commit' => "Create Quickvote", 'quickvote' => {'name' => "has a space", 'description' => "Foobar"}}, nil, {:candidate_names => ["foo", "bar", "foobar"]}) + post(:create, {'commit' => "Create Quickvote", + 'quickvote' => {'name' => "has a space", 'description' => "Foobar"}}, + nil, {:candidate_names => ["foo", "bar", "foobar"]}) assert_template "quickvote/_create_sidebar" end def test_create_quickvote_dupe_candidate - post(:create, {'commit' => "Create Quickvote", 'quickvote' => {'name' => "has a space", 'description' => "Foobar"}}, nil, {:candidate_names => ["foo", "bar", "bar", "foobar"]}) + post(:create, {'commit' => "Create Quickvote", + 'quickvote' => {'name' => "has a space", 'description' => "Foobar"}}, + nil, {:candidate_names => ["foo", "bar", "bar", "foobar"]}) assert_template "quickvote/_create_sidebar" end - + + # TODO these should be testing for something better than a non-method + # error! def test_create_quickvote_nil_candidate - post(:create, {'commit' => "Create Quickvote", 'quickvote' => {'name' => "has a space", 'description' => "Foobar"}}, nil, {:candidate_names => nil}) - assert_template "quickvote/_create_sidebar" - post(:create, {'commit' => "Create Quickvote", 'quickvote' => {'name' => "has a space", 'description' => "Foobar"}}, nil, {:candidate_names => []}) - assert_template "quickvote/_create_sidebar" + assert_raise(NoMethodError) do + post(:create, {'commit' => "Create Quickvote", + 'quickvote' => {'name' => "has a space", 'description' => "Foobar"}}, + nil, {:candidate_names => nil}) + end + + assert_raise(NoMethodError) do + post(:create, {'commit' => "Create Quickvote", + 'quickvote' => {'name' => "has a space", 'description' => "Foobar"}}, + nil, {:candidate_names => []}) + end end def test_get_quickvote_nonexistent @@ -87,7 +101,9 @@ class QuickvoteControllerTest < Test::Unit::TestCase 5.times do |time| get :index, { 'ident' => 'variable' }, { 'test_session_id' => (time+1)*50 } assert_response :success - post :confirm, { 'ident' => 'variable', 'rankings-list' => votes.sort_by {rand} }, { 'test_session_id' => (time+1)*50 } + post :confirm, + { 'ident' => 'variable', 'rankings-list' => votes.sort_by {rand} }, + { 'test_session_id' => (time+1)*50 } assert_template 'quickvote/thanks' end get :results, { 'ident' => 'variable' } diff --git a/test/unit/quickvote_test.rb b/test/unit/quickvote_test.rb index 69a7033..83a0cdb 100644 --- a/test/unit/quickvote_test.rb +++ b/test/unit/quickvote_test.rb @@ -4,35 +4,105 @@ class QuickVoteTest < Test::Unit::TestCase fixtures :elections, :candidates def setup - @quickvote_normal = QuickVote.find(1) - end - - def test_create_update_delete_quickvote_from_fixture - assert_kind_of QuickVote, @quickvote_normal - assert_equal 1, @quickvote_normal.id - assert_equal 'acetarium', @quickvote_normal.name - assert_equal 'who is the winner?', @quickvote_normal.description - #assert_equal QuickVote, @quickvote_normal.type - assert_equal 'ssd', @quickvote_normal.election_method - assert_equal '2007-08-22 12:00:00', @quickvote_normal.startdate_before_type_cast - assert_equal '2007-09-21 11:59:59', @quickvote_normal.enddate_before_type_cast - - # make sure that the each of the three andidates - (1..3).each do |i| - assert @quickvote_normal.candidates.include?(Candidate.find(i)) + # create the quickvote + @qv = QuickVote.find(1) + + # create candidates + @candidates = ['mako', 'mika', 'bettamax'] + @candidates.each do |name| + @qv.candidates << Candidate.new({:name => name}) end + @qv.save + end + + def test_add_remove_candidates + # make sure the names are right + assert_equal 3, @qv.candidates.length + assert_equal @candidates.sort, + @qv.candidates.collect {|c| c.name}.sort + + # add one candidate + @qv.candidates << Candidate.new({:name => 'erik'}) + assert @qv.save + assert @qv.reload + assert_equal 4, @qv.candidates.length + assert_equal (@candidates + ['erik']).sort, + @qv.candidates.collect {|c| c.name}.sort + + # drop erik and try again + @qv.candidates = \ + @qv.candidates.select {|c| c.name != 'erik'} + assert @qv.save + assert @qv.reload + assert_equal 3, @qv.candidates.length + assert_equal @candidates.sort, + @qv.candidates.collect {|c| c.name}.sort + end + + def test_create_update_quickvote + assert_kind_of QuickVote, @qv + assert_equal 1, @qv.id + assert_equal 'acetarium', @qv.name + assert_equal 'who is the winner?', @qv.description + assert_equal 'ssd', @qv.election_method + assert_equal '2007-08-22 12:00:00', @qv.startdate_before_type_cast + assert_equal '2010-09-21 11:59:59', @qv.enddate_before_type_cast + + # should be set by default default results + assert_equal false, @qv.early_results + assert_equal false, @qv.kiosk + assert_equal true, @qv.authenticated + assert_equal false, @qv.embeddable + assert_equal true, @qv.verifiable # update and save - @quickvote_normal.name = 'foobar' - assert @quickvote_normal.save, - @quickvote_normal.errors.full_messages.join("; ") + @qv.name = 'foobar' + assert @qv.save, + @qv.errors.full_messages.join("; ") - @quickvote_normal.reload - assert_equal 'foobar', @quickvote_normal.name + @qv.reload + assert_equal 'foobar', @qv.name end def test_create_invalid_enddate - qv = QuickVote.find(2) - assert_equal qv.save, false, "created vote with invalid enddate" + @qv.enddate = '2003-09-21 11:59:59 ' + assert_equal @qv.save, false, "created vote with invalid enddate" + assert @qv.reload + end + + def test_add_voters + 50.times do + voter = QuickVoter.new + voter.election = @qv + voter.session_id = UniqueTokenGenerator.new(20).token + + voter.vote = Vote.new + assert voter.save + voter.vote.set_defaults! + assert_nil voter.vote.confirm! + assert voter.reload + end + assert @qv.save + assert_equal 50, @qv.voters.length + assert_equal 50, @qv.voters.collect {|v| v.vote}.length + assert_equal 50, @qv.voters.select {|v| v.vote.confirmed?}.length + end + + def test_build_results + end + + def test_bernie_qv + assert qvb = QuickVote.find(954) + assert_kind_of QuickVote, qvb + assert_equal 17, qvb.candidates.length end + + def test_for_reload_errors + qvb = QuickVote.find(954) + qvb.save + qvb.reload + + assert_equal (4666..4682).to_a, qvb.candidates.collect {|c| c.id}.sort + end + end diff --git a/test/unit/ranking_test.rb b/test/unit/ranking_test.rb index 2e44da8..ddd8f3e 100644 --- a/test/unit/ranking_test.rb +++ b/test/unit/ranking_test.rb @@ -5,6 +5,5 @@ class RankingTest < Test::Unit::TestCase # Replace this with your real tests. def test_truth - assert_kind_of Ranking, rankings(:first) end end diff --git a/test/unit/voter_test.rb b/test/unit/voter_test.rb index 0b41048..8593ad7 100644 --- a/test/unit/voter_test.rb +++ b/test/unit/voter_test.rb @@ -5,6 +5,5 @@ class VoterTest < Test::Unit::TestCase # Replace this with your real tests. def test_truth - assert_kind_of Voter, voters(:first) end end -- 2.30.2