vrfs-774: instrument query filtering
This commit is contained in:
parent
f6674cfc64
commit
4ccd3b9091
|
|
@ -6,7 +6,7 @@ module JamRuby
|
|||
LIMIT = 10
|
||||
|
||||
ORDER_FOLLOWS = ['Most Followed', :followed]
|
||||
ORDER_LIKED = ['Most Plays', :plays]
|
||||
ORDER_PLAYS = ['Most Plays', :plays]
|
||||
ORDER_PLAYING = ['Playing Now', :playing]
|
||||
ORDERINGS = [ORDER_FOLLOWS, ORDER_PLAYS, ORDER_PLAYING]
|
||||
ORDERING_KEYS = ORDERINGS.collect { |oo| oo[1] }
|
||||
|
|
|
|||
|
|
@ -903,7 +903,7 @@ module JamRuby
|
|||
def self.musician_search(params={}, current_user=nil)
|
||||
rel = User.where(:musician => true)
|
||||
unless (instrument = params[:instrument]).blank?
|
||||
rel = rel.joins("INNER JOIN musicians_instruments AS minst ON minst.user_id = users.id")
|
||||
rel = rel.joins("RIGHT JOIN musicians_instruments AS minst ON minst.user_id = users.id")
|
||||
.where(['minst.instrument_id = ?', instrument])
|
||||
end
|
||||
|
||||
|
|
@ -935,6 +935,7 @@ module JamRuby
|
|||
perpage = params[:per_page] || 20
|
||||
page = [params[:page].to_i, 1].max
|
||||
rel = rel.paginate(:page => page, :per_page => perpage)
|
||||
# puts rel.to_sql
|
||||
rel
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -110,6 +110,12 @@ FactoryGirl.define do
|
|||
priority 0
|
||||
end
|
||||
|
||||
factory :musician_instrument2, :class => JamRuby::MusicianInstrument do
|
||||
instrument { Instrument.find('tuba') }
|
||||
proficiency_level 1
|
||||
priority 0
|
||||
end
|
||||
|
||||
factory :invited_user, :class => JamRuby::InvitedUser do
|
||||
sequence(:email) { |n| "user#{n}@someservice.com" }
|
||||
autofriend false
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ describe User do
|
|||
results.all.count.should == 2
|
||||
end
|
||||
|
||||
it "should find all musicians sorted by plays with pagination" do
|
||||
it "should find all musicians sorted by plays " do
|
||||
pending
|
||||
end
|
||||
|
||||
|
|
@ -63,9 +63,13 @@ describe User do
|
|||
end
|
||||
|
||||
it "should find musicians with an instrument" do
|
||||
@user1.musician_instruments << FactoryGirl.build(:musician_instrument, user: @user1)
|
||||
ii = @user1.instruments[0]
|
||||
ii.should not_be nil
|
||||
@user1.musician_instruments << FactoryGirl.build(:musician_instrument2, user: @user1)
|
||||
ii = @user1.instruments.detect { |inst| inst.id == 'tuba' }
|
||||
ii.should_not be_nil
|
||||
params = { :instrument => ii.id }
|
||||
results = User.musician_search(params)
|
||||
results.all[0].instruments.detect {|inst| inst.id=='tuba'}.id.should == ii.id
|
||||
results.all.count.should == 1
|
||||
end
|
||||
|
||||
it "should find musicians within a given distance of location" do
|
||||
|
|
|
|||
Loading…
Reference in New Issue