adds controller check for anonymous votes
This commit is contained in:
@@ -53,7 +53,7 @@ class DebatesController < ApplicationController
|
||||
end
|
||||
|
||||
def vote
|
||||
@debate.vote_by(voter: current_user, vote: params[:value])
|
||||
@debate.vote_by(voter: current_user, vote: params[:value]) if @debate.votable_by?(current_user)
|
||||
set_debate_votes(@debate)
|
||||
end
|
||||
|
||||
|
||||
@@ -72,6 +72,7 @@ class Debate < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def anonymous_votes_ratio
|
||||
return 0 if cached_votes_total == 0
|
||||
(cached_anonymous_votes_total.to_f / cached_votes_total) * 100
|
||||
end
|
||||
|
||||
|
||||
@@ -12,7 +12,6 @@ describe DebatesController do
|
||||
end
|
||||
|
||||
describe 'POST create' do
|
||||
|
||||
it 'should create an ahoy event' do
|
||||
|
||||
sign_in create(:user)
|
||||
@@ -22,4 +21,26 @@ describe DebatesController do
|
||||
expect(Ahoy::Event.last.properties['debate_id']).to eq Debate.last.id
|
||||
end
|
||||
end
|
||||
|
||||
describe "Vote with too many anonymous votes" do
|
||||
it 'should allow vote if user is allowed' do
|
||||
Setting.find_by(key: "max_ratio_anon_votes_on_debates").update(value: 100)
|
||||
debate = create(:debate)
|
||||
sign_in create(:user)
|
||||
|
||||
expect do
|
||||
xhr :post, :vote, id: debate.id, value: 'yes'
|
||||
end.to change { debate.reload.votes_for.size }.by(1)
|
||||
end
|
||||
|
||||
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)
|
||||
sign_in create(:user)
|
||||
|
||||
expect do
|
||||
xhr :post, :vote, id: debate.id, value: 'yes'
|
||||
end.to_not change { debate.reload.votes_for.size }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -5,7 +5,7 @@ feature 'Votes' do
|
||||
feature 'Debates' do
|
||||
|
||||
background do
|
||||
@manuela = create(:user)
|
||||
@manuela = create(:user, verified_at: Time.now)
|
||||
@pablo = create(:user)
|
||||
@debate = create(:debate)
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ describe Debate do
|
||||
describe "#votable_by?" do
|
||||
let(:debate) { create(:debate) }
|
||||
|
||||
before(:all) do
|
||||
before(:each) do
|
||||
Setting.find_by(key: "max_ratio_anon_votes_on_debates").update(value: 50)
|
||||
end
|
||||
|
||||
|
||||
@@ -21,7 +21,6 @@ RSpec.configure do |config|
|
||||
config.before(:each) do |example|
|
||||
DatabaseCleaner.strategy = example.metadata[:js] ? :truncation : :transaction
|
||||
DatabaseCleaner.start
|
||||
|
||||
load "#{Rails.root}/db/seeds.rb"
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user