From 0ae1cdfc8cf76a26289ca8aa10dfcc4de400df2b Mon Sep 17 00:00:00 2001 From: decabeza Date: Fri, 8 Feb 2019 18:33:22 +0100 Subject: [PATCH] Replace total votes to cached_votes_score on legislation proposals This show votes_score as result of votes_up minus votes_down --- app/models/legislation/proposal.rb | 4 ++ .../legislation/proposals/_votes.html.erb | 2 +- spec/features/legislation/proposals_spec.rb | 45 +++++++++++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) diff --git a/app/models/legislation/proposal.rb b/app/models/legislation/proposal.rb index d7c5e4807..72f6dcb51 100644 --- a/app/models/legislation/proposal.rb +++ b/app/models/legislation/proposal.rb @@ -96,6 +96,10 @@ class Legislation::Proposal < ActiveRecord::Base cached_votes_total end + def votes_score + cached_votes_score + end + def voters User.active.where(id: votes_for.voters) end diff --git a/app/views/legislation/proposals/_votes.html.erb b/app/views/legislation/proposals/_votes.html.erb index d88cf96d2..03c707608 100644 --- a/app/views/legislation/proposals/_votes.html.erb +++ b/app/views/legislation/proposals/_votes.html.erb @@ -42,7 +42,7 @@ <% end %> - <%= t("proposals.proposal.votes", count: proposal.total_votes) %> + <%= t("proposals.proposal.votes", count: proposal.votes_score) %> <% if user_signed_in? && current_user.organization? %> diff --git a/spec/features/legislation/proposals_spec.rb b/spec/features/legislation/proposals_spec.rb index 2b005e3a3..ce2862981 100644 --- a/spec/features/legislation/proposals_spec.rb +++ b/spec/features/legislation/proposals_spec.rb @@ -145,4 +145,49 @@ feature 'Legislation Proposals' do expect(page).to have_content 'Including an image on a legislation proposal' expect(page).to have_css("img[alt='#{Legislation::Proposal.last.image.title}']") end + + scenario "Show votes score on index and show" do + legislation_proposal_positive = create(:legislation_proposal, + legislation_process_id: process.id, + title: "Legislation proposal positive") + + legislation_proposal_zero = create(:legislation_proposal, + legislation_process_id: process.id, + title: "Legislation proposal zero") + + legislation_proposal_negative = create(:legislation_proposal, + legislation_process_id: process.id, + title: "Legislation proposal negative") + + 10.times { create(:vote, votable: legislation_proposal_positive, vote_flag: true) } + 3.times { create(:vote, votable: legislation_proposal_positive, vote_flag: false) } + + 5.times { create(:vote, votable: legislation_proposal_zero, vote_flag: true) } + 5.times { create(:vote, votable: legislation_proposal_zero, vote_flag: false) } + + 6.times { create(:vote, votable: legislation_proposal_negative, vote_flag: false) } + + visit legislation_process_proposals_path(process) + + within "#legislation_proposal_#{legislation_proposal_positive.id}" do + expect(page).to have_content("7 votes") + end + + within "#legislation_proposal_#{legislation_proposal_zero.id}" do + expect(page).to have_content("No votes") + end + + within "#legislation_proposal_#{legislation_proposal_negative.id}" do + expect(page).to have_content("-6 votes") + end + + visit legislation_process_proposal_path(process, legislation_proposal_positive) + expect(page).to have_content("7 votes") + + visit legislation_process_proposal_path(process, legislation_proposal_zero) + expect(page).to have_content("No votes") + + visit legislation_process_proposal_path(process, legislation_proposal_negative) + expect(page).to have_content("-6 votes") + end end