From c2faf0ef925594cdee42728efa194b2861ae4a30 Mon Sep 17 00:00:00 2001 From: kikito Date: Tue, 1 Sep 2015 13:08:32 +0200 Subject: [PATCH] Merge Vote.in with Vote.for_debates --- app/models/user.rb | 4 +-- config/initializers/vote_extensions.rb | 10 ++----- spec/models/vote_spec.rb | 41 ++++++++++++-------------- 3 files changed, 24 insertions(+), 31 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 6055772b4..67db79b5b 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -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? diff --git a/config/initializers/vote_extensions.rb b/config/initializers/vote_extensions.rb index 4bbf48d20..c0a92ef40 100644 --- a/config/initializers/vote_extensions.rb +++ b/config/initializers/vote_extensions.rb @@ -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 \ No newline at end of file +end diff --git a/spec/models/vote_spec.rb b/spec/models/vote_spec.rb index 41fcf8471..1a44e7606 100644 --- a/spec/models/vote_spec.rb +++ b/spec/models/vote_spec.rb @@ -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 \ No newline at end of file +end