diff --git a/app/models/debate.rb b/app/models/debate.rb index e088d8141..9c96c812c 100644 --- a/app/models/debate.rb +++ b/app/models/debate.rb @@ -75,7 +75,9 @@ class Debate < ActiveRecord::Base 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 1628c9bcf..f87635a6b 100644 --- a/spec/controllers/debates_controller_spec.rb +++ b/spec/controllers/debates_controller_spec.rb @@ -35,7 +35,7 @@ describe DebatesController do 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 96e3b3c96..0378dabab 100644 --- a/spec/models/debate_spec.rb +++ b/spec/models/debate_spec.rb @@ -124,7 +124,7 @@ describe Debate do 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 @@ describe Debate do 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