From 274ddb2589547713e7f866a69c5abc16ec83bbb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juanjo=20Baz=C3=A1n?= Date: Wed, 2 Sep 2015 13:40:38 +0200 Subject: [PATCH] changes rules for allowing debate votes first 100 votes are allowed for unverified users --- app/models/debate.rb | 4 +++- spec/controllers/debates_controller_spec.rb | 2 +- spec/models/debate_spec.rb | 12 +++++++++--- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/app/models/debate.rb b/app/models/debate.rb index e088d81412c..9c96c812c58 100644 --- a/app/models/debate.rb +++ b/app/models/debate.rb @@ -75,7 +75,9 @@ def register_vote(user, vote_value) end def votable_by?(user) - !user.unverified? || + total_votes <= 100 || + !user.unverified? || + Setting.value_for('max_ratio_anon_votes_on_debates').to_i == 100 || anonymous_votes_ratio < Setting.value_for('max_ratio_anon_votes_on_debates').to_i || user.voted_for?(self) end diff --git a/spec/controllers/debates_controller_spec.rb b/spec/controllers/debates_controller_spec.rb index 1628c9bcf81..f87635a6bb5 100644 --- a/spec/controllers/debates_controller_spec.rb +++ b/spec/controllers/debates_controller_spec.rb @@ -35,7 +35,7 @@ it 'should not allow vote if user is not allowed' do Setting.find_by(key: "max_ratio_anon_votes_on_debates").update(value: 0) - debate = create(:debate) + debate = create(:debate, cached_votes_total: 1000) sign_in create(:user) expect do diff --git a/spec/models/debate_spec.rb b/spec/models/debate_spec.rb index 96e3b3c96df..0378dabab83 100644 --- a/spec/models/debate_spec.rb +++ b/spec/models/debate_spec.rb @@ -124,7 +124,7 @@ end describe "from anonymous users when there are too many anonymous votes" do - before(:each) {debate.update(cached_anonymous_votes_total: 52, cached_votes_total: 100)} + before(:each) {debate.update(cached_anonymous_votes_total: 520, cached_votes_total: 1000)} it "should not register vote " do user = create(:user) @@ -156,13 +156,19 @@ end it "should be true for anonymous users if allowed anonymous votes" do - debate.update(cached_anonymous_votes_total: 42, cached_votes_total: 100) + debate.update(cached_anonymous_votes_total: 420, cached_votes_total: 1000) + user = create(:user) + expect(debate.votable_by?(user)).to be true + end + + it "should be true for anonymous users if less than 100 votes" do + debate.update(cached_anonymous_votes_total: 90, cached_votes_total: 92) user = create(:user) expect(debate.votable_by?(user)).to be true end it "should be false for anonymous users if too many anonymous votes" do - debate.update(cached_anonymous_votes_total: 52, cached_votes_total: 100) + debate.update(cached_anonymous_votes_total: 520, cached_votes_total: 1000) user = create(:user) expect(debate.votable_by?(user)).to be false end