Merge Vote.in with Vote.for_debates

This commit is contained in:
kikito
2015-09-01 13:08:32 +02:00
parent 9a071d2ed7
commit c2faf0ef92
3 changed files with 24 additions and 31 deletions

View File

@@ -77,8 +77,8 @@ class User < ActiveRecord::Base
end
def debate_votes(debates)
voted = votes.for_debates.in(debates)
voted.each_with_object({}) { |v, _| _[v.votable_id] = v.value }
voted = votes.for_debates(debates)
voted.each_with_object({}) { |v, h| h[v.votable_id] = v.value }
end
def administrator?

View File

@@ -1,13 +1,9 @@
ActsAsVotable::Vote.class_eval do
def self.for_debates
where(votable_type: 'Debate')
end
def self.in(debates)
where(votable_id: debates)
def self.for_debates(debates)
where(votable_type: 'Debate', votable_id: debates)
end
def value
vote_flag
end
end
end

View File

@@ -3,34 +3,31 @@ require 'rails_helper'
describe 'Vote' do
describe '#for_debates' do
it 'returns votes for debates' do
debate = create(:debate)
create(:vote, votable: debate)
expect(Vote.for_debates.count).to eq(1)
end
it 'does not returns votes for other votables' do
debate = create(:debate)
comment = create(:comment)
create(:vote, votable: comment)
expect(Vote.for_debates.count).to eq(0)
end
end
describe '#in' do
it 'returns debates send in parameters' do
debate = create(:debate)
create(:vote, votable: debate)
expect(Vote.in(debate).count).to eq(1)
expect(Vote.for_debates(debate).count).to eq(0)
end
it 'does not return debates not in parameters' do
debate = create(:debate)
create(:vote, votable: debate)
it 'returns votes only for debates in parameters' do
debate1 = create(:debate)
debate2 = create(:debate)
create(:vote, votable: debate1)
expect(Vote.in([]).count).to eq(0)
expect(Vote.for_debates(debate1).count).to eq(1)
expect(Vote.for_debates(debate2).count).to eq(0)
end
it 'accepts more than 1 debate' do
debate1 = create(:debate)
debate2 = create(:debate)
debate3 = create(:debate)
create(:vote, votable: debate1)
create(:vote, votable: debate3)
expect(Vote.for_debates([debate1, debate2]).count).to eq(1)
end
end
@@ -43,4 +40,4 @@ describe 'Vote' do
expect(vote.value).to eq(false)
end
end
end
end