adds method to get user votes on specific debates
This commit is contained in:
@@ -2,7 +2,17 @@ class User < ActiveRecord::Base
|
|||||||
devise :database_authenticatable, :registerable, :confirmable,
|
devise :database_authenticatable, :registerable, :confirmable,
|
||||||
:recoverable, :rememberable, :trackable, :validatable
|
:recoverable, :rememberable, :trackable, :validatable
|
||||||
|
|
||||||
|
acts_as_voter
|
||||||
|
|
||||||
def name
|
def name
|
||||||
"#{first_name} #{last_name}"
|
"#{first_name} #{last_name}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def votes_on_debates(debates_ids = [])
|
||||||
|
debates_ids = debates_ids.flatten.compact.uniq
|
||||||
|
return {} if debates_ids.empty?
|
||||||
|
|
||||||
|
voted = votes.where("votable_type = ? AND votable_id IN (?)", "Debate", debates_ids)
|
||||||
|
voted.each_with_object({}){ |v,_| _[v.votable_id] = v.vote_flag }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,4 +1,30 @@
|
|||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
describe User do
|
describe User do
|
||||||
|
|
||||||
|
before(:each) do
|
||||||
|
@user = create(:user)
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "#votes_on_debates" do
|
||||||
|
it "should return {} if no debate" do
|
||||||
|
expect(@user.votes_on_debates()).to eq({})
|
||||||
|
expect(@user.votes_on_debates([])).to eq({})
|
||||||
|
expect(@user.votes_on_debates([nil, nil])).to eq({})
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should return a hash of debates ids and votes" do
|
||||||
|
debate1 = create(:debate)
|
||||||
|
debate2 = create(:debate)
|
||||||
|
debate3 = create(:debate)
|
||||||
|
create(:vote, voter: @user, votable: debate1, vote_flag: true)
|
||||||
|
create(:vote, voter: @user, votable: debate3, vote_flag: false)
|
||||||
|
|
||||||
|
voted = @user.votes_on_debates([debate1.id, debate2.id, debate3.id])
|
||||||
|
|
||||||
|
expect(voted[debate1.id]).to eq(true)
|
||||||
|
expect(voted[debate2.id]).to eq(nil)
|
||||||
|
expect(voted[debate3.id]).to eq(false)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user