Merge pull request #499 from AyuntamientoMadrid/percentages
makes percentage votes to sum 100
This commit is contained in:
@@ -1,10 +1,5 @@
|
||||
module ApplicationHelper
|
||||
|
||||
def percentage(vote, debate)
|
||||
return "0%" if debate.total_votes == 0
|
||||
debate.send(vote).percent_of(debate.total_votes).to_s + "%"
|
||||
end
|
||||
|
||||
def home_page?
|
||||
return false if user_signed_in?
|
||||
# Using path because fullpath yields false negatives since it contains
|
||||
|
||||
@@ -1,5 +1,18 @@
|
||||
module VotesHelper
|
||||
|
||||
def debate_percentage_of_likes(debate)
|
||||
debate.likes.percent_of(debate.total_votes)
|
||||
end
|
||||
|
||||
def votes_percentage(vote, debate)
|
||||
return "0%" if debate.total_votes == 0
|
||||
if vote == 'likes'
|
||||
debate_percentage_of_likes(debate).to_s + "%"
|
||||
elsif vote == 'dislikes'
|
||||
(100 - debate_percentage_of_likes(debate)).to_s + "%"
|
||||
end
|
||||
end
|
||||
|
||||
def css_classes_for_vote(votes, votable)
|
||||
case votes[votable.id]
|
||||
when true
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<%= link_to vote_debate_path(debate, value: 'yes'),
|
||||
class: "like #{voted_classes[:in_favor]}", title: t('votes.agree'), method: "post", remote: true do %>
|
||||
<i class="icon-like"></i>
|
||||
<span><%= percentage('likes', debate) %></span>
|
||||
<span><%= votes_percentage('likes', debate) %></span>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<div class="against inline-block">
|
||||
<%= link_to vote_debate_path(debate, value: 'no'), class: "unlike #{voted_classes[:against]}", title: t('votes.disagree'), method: "post", remote: true do %>
|
||||
<i class="icon-unlike"></i>
|
||||
<span><%= percentage('dislikes', debate) %></span>
|
||||
<span><%= votes_percentage('dislikes', debate) %></span>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -18,4 +18,15 @@ describe VotesHelper do
|
||||
end
|
||||
end
|
||||
|
||||
describe "#votes_percentage" do
|
||||
it "should always sum 100%" do
|
||||
debate = create(:debate)
|
||||
create_list(:vote, 8, votable: debate, vote_flag: true)
|
||||
create_list(:vote, 3, votable: debate, vote_flag: false)
|
||||
|
||||
expect(votes_percentage('likes', debate)).to eq("72%")
|
||||
expect(votes_percentage('dislikes', debate)).to eq("28%")
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user