From 1c5f77def21ec7a2ac6f3950f2a5439b3f186161 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juanjo=20Baz=C3=A1n?= Date: Tue, 15 Sep 2015 14:11:12 +0200 Subject: [PATCH 1/3] makes percentage votes to sum 100 --- app/helpers/application_helper.rb | 8 ++++++-- app/views/debates/_votes.html.erb | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 54eadb947..59a604810 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,8 +1,12 @@ module ApplicationHelper - def percentage(vote, debate) + def votes_percentage(vote, debate) return "0%" if debate.total_votes == 0 - debate.send(vote).percent_of(debate.total_votes).to_s + "%" + if vote == 'likes' + debate.likes.percent_of(debate.total_votes).to_s + "%" + elsif vote == 'dislikes' + (100 - debate.likes.percent_of(debate.total_votes)).to_s + "%" + end end def home_page? diff --git a/app/views/debates/_votes.html.erb b/app/views/debates/_votes.html.erb index 89a03752f..970bcc8a5 100644 --- a/app/views/debates/_votes.html.erb +++ b/app/views/debates/_votes.html.erb @@ -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 %> - <%= percentage('likes', debate) %> + <%= votes_percentage('likes', debate) %> <% end %> @@ -13,7 +13,7 @@
<%= link_to vote_debate_path(debate, value: 'no'), class: "unlike #{voted_classes[:against]}", title: t('votes.disagree'), method: "post", remote: true do %> - <%= percentage('dislikes', debate) %> + <%= votes_percentage('dislikes', debate) %> <% end %>
From 26da253a5dee6db7b0c673dbe14f9aad5bc55ed4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juanjo=20Baz=C3=A1n?= Date: Tue, 15 Sep 2015 14:44:12 +0200 Subject: [PATCH 2/3] moves helper method to votes helper and adds spec --- app/helpers/application_helper.rb | 9 --------- app/helpers/votes_helper.rb | 9 +++++++++ spec/helpers/votes_helper_spec.rb | 11 +++++++++++ 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 59a604810..1d56ae4d3 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,14 +1,5 @@ module ApplicationHelper - def votes_percentage(vote, debate) - return "0%" if debate.total_votes == 0 - if vote == 'likes' - debate.likes.percent_of(debate.total_votes).to_s + "%" - elsif vote == 'dislikes' - (100 - debate.likes.percent_of(debate.total_votes)).to_s + "%" - end - end - def home_page? return false if user_signed_in? # Using path because fullpath yields false negatives since it contains diff --git a/app/helpers/votes_helper.rb b/app/helpers/votes_helper.rb index dafb108c7..c4c3d76a1 100644 --- a/app/helpers/votes_helper.rb +++ b/app/helpers/votes_helper.rb @@ -1,5 +1,14 @@ module VotesHelper + def votes_percentage(vote, debate) + return "0%" if debate.total_votes == 0 + if vote == 'likes' + debate.likes.percent_of(debate.total_votes).to_s + "%" + elsif vote == 'dislikes' + (100 - debate.likes.percent_of(debate.total_votes)).to_s + "%" + end + end + def css_classes_for_vote(votes, votable) case votes[votable.id] when true diff --git a/spec/helpers/votes_helper_spec.rb b/spec/helpers/votes_helper_spec.rb index 96be3b3fe..d695b881a 100644 --- a/spec/helpers/votes_helper_spec.rb +++ b/spec/helpers/votes_helper_spec.rb @@ -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 \ No newline at end of file From 94ccae91a45273007e0b312117dbfe1f18d0edfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juanjo=20Baz=C3=A1n?= Date: Tue, 15 Sep 2015 14:59:07 +0200 Subject: [PATCH 3/3] refactors helper method --- app/helpers/votes_helper.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/helpers/votes_helper.rb b/app/helpers/votes_helper.rb index c4c3d76a1..dc1df0396 100644 --- a/app/helpers/votes_helper.rb +++ b/app/helpers/votes_helper.rb @@ -1,11 +1,15 @@ 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.likes.percent_of(debate.total_votes).to_s + "%" + debate_percentage_of_likes(debate).to_s + "%" elsif vote == 'dislikes' - (100 - debate.likes.percent_of(debate.total_votes)).to_s + "%" + (100 - debate_percentage_of_likes(debate)).to_s + "%" end end