From a472b4acc80a412afa27bf3306b270292d11cfb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juanjo=20Baz=C3=A1n?= Date: Mon, 14 Sep 2015 19:06:07 +0200 Subject: [PATCH] implements percentage in proposal supports --- app/helpers/proposals_helper.rb | 10 ++++++++++ app/views/proposals/_votes.html.erb | 2 +- spec/helpers/proposals_helper_spec.rb | 23 ++++++++++++++++++++++- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/app/helpers/proposals_helper.rb b/app/helpers/proposals_helper.rb index 85edd6e07..42090a276 100644 --- a/app/helpers/proposals_helper.rb +++ b/app/helpers/proposals_helper.rb @@ -8,4 +8,14 @@ module ProposalsHelper end end + def supports_percentage(proposal) + percentage = (proposal.cached_votes_up.to_f * 100 / Proposal.votes_needed_for_success) + case percentage + when 0 then "0%" + when 0..(0.1) then "0.1%" + when (0.1)..100 then number_to_percentage(percentage, strip_insignificant_zeros: true, precision: 1) + else "100%" + end + end + end \ No newline at end of file diff --git a/app/views/proposals/_votes.html.erb b/app/views/proposals/_votes.html.erb index 8edff438c..924dd42d3 100644 --- a/app/views/proposals/_votes.html.erb +++ b/app/views/proposals/_votes.html.erb @@ -8,7 +8,7 @@ <%= t("proposals.proposal.supports", count: proposal.total_votes) %>  - (0.1%) + (<%= supports_percentage(proposal) %>) "> diff --git a/spec/helpers/proposals_helper_spec.rb b/spec/helpers/proposals_helper_spec.rb index 595c21fbb..983f43572 100644 --- a/spec/helpers/proposals_helper_spec.rb +++ b/spec/helpers/proposals_helper_spec.rb @@ -3,7 +3,6 @@ require 'rails_helper' describe ProposalsHelper do describe "#progress_bar_percentage" do - it "should be 0 if no votes" do proposal = create(:proposal) expect(progress_bar_percentage(proposal)).to eq 0 @@ -20,4 +19,26 @@ describe ProposalsHelper do end end + describe "#supports_percentage" do + it "should be 0 if no votes" do + proposal = create(:proposal) + expect(supports_percentage(proposal)).to eq "0%" + end + + it "should be a between 0.1 from 1 to 0.1% of needed votes" do + proposal = create(:proposal, cached_votes_up: 1) + expect(supports_percentage(proposal)).to eq "0.1%" + end + + it "should be a between 1 and 100 if there are votes but less than needed" do + proposal = create(:proposal, cached_votes_up: Proposal.votes_needed_for_success/2) + expect(supports_percentage(proposal)).to eq "50%" + end + + it "should be 100 if there are more votes than needed" do + proposal = create(:proposal, cached_votes_up: Proposal.votes_needed_for_success*2) + expect(supports_percentage(proposal)).to eq "100%" + end + end + end \ No newline at end of file