Merge pull request #267 from ChrisBr/bugfix_top_submitter

[Bugfix] conference top submitter now ordered by submissions
This commit is contained in:
Christian Bruckmayer 2014-06-25 14:16:10 +02:00
commit 678fe38a25
2 changed files with 38 additions and 5 deletions

View file

@ -304,7 +304,7 @@ class Conference < ActiveRecord::Base
# * +hash+ -> person: submissions
def self.get_top_submitter(limit = 5)
submitter = EventPerson.where('event_role = ?', 'submitter').limit(limit).group(:person_id)
counter = submitter.count
counter = submitter.order('count_all desc').count
calculate_person_submission_hash(submitter, counter)
end
@ -318,7 +318,7 @@ class Conference < ActiveRecord::Base
where('event_role = ? and conference_id = ?', 'submitter', id).
limit(limit).group(:person_id)
counter = submitter.count
counter = submitter.order('count_all desc').count
Conference.calculate_person_submission_hash(submitter, counter)
end
@ -656,9 +656,12 @@ class Conference < ActiveRecord::Base
# ====Returns
# * +hash+ -> person: submissions
def self.calculate_person_submission_hash(submitter, counter)
result = {}
submitter.each do |s|
result[s.person] = counter[s.person_id]
result = ActiveSupport::OrderedHash.new
counter.each do |key, value|
submitter = submitter.find_by_id(key)
if submitter
result[submitter] = value
end
end
result
end

View file

@ -6,6 +6,36 @@ describe Conference do
let(:subject) { create(:conference) }
# describe '#get_top_submitter' do
# # It is necessary to use bang version of let to build roles before user
# let!(:organizer_role) { create(:organizer_role) }
# let!(:participant_role) { create(:participant_role) }
# let!(:admin_role) { create(:admin_role) }
#
# it 'calculates correct hash with top submitters' do
# event = create(:event, conference: subject)
# result = {
# event.submitter => 1
# }
# expect(subject.get_top_submitter).to eq(result)
# end
#
# it 'returns the submitter ordered by submissions' do
# e1 = create(:event, conference: subject)
#
# e2 = create(:event, conference: subject)
# e3 = create(:event, conference: subject)
# e4 = create(:event, conference: subject)
#
# e3.event_people = [create(:event_person, person: e2.submitter, event_role: 'submitter')]
# e4.event_people = [create(:event_person, person: e2.submitter, event_role: 'submitter')]
#
# expect(subject.get_top_submitter.values).to eq([3, 1])
# expect(subject.get_top_submitter.keys).to eq([e2.submitter, e1.submitter])
# end
#
# end
describe 'program hours' do
before(:each) do
@long = create(:event_type, length: 100)