vrfs988: fixed filter searchtype bug
This commit is contained in:
parent
1a39f6296b
commit
48bde580ae
|
|
@ -93,8 +93,6 @@ module JamRuby
|
|||
end
|
||||
|
||||
def self.musician_filter(params={}, current_user=nil)
|
||||
@search_type = :musicians_filter
|
||||
|
||||
rel = User.musicians
|
||||
unless (instrument = params[:instrument]).blank?
|
||||
rel = rel.joins("RIGHT JOIN musicians_instruments AS minst ON minst.user_id = users.id")
|
||||
|
|
@ -129,6 +127,7 @@ module JamRuby
|
|||
|
||||
objs = rel.all
|
||||
srch = Search.new
|
||||
srch.search_type = :musicians_filter
|
||||
srch.page_num, srch.page_count = page, objs.total_pages
|
||||
srch.musician_results_for_user(objs, current_user)
|
||||
end
|
||||
|
|
@ -257,7 +256,6 @@ module JamRuby
|
|||
end
|
||||
|
||||
def self.band_filter(params={}, current_user=nil)
|
||||
@search_type = :band_filter
|
||||
rel = Band.scoped
|
||||
|
||||
unless (genre = params[:genre]).blank?
|
||||
|
|
@ -292,6 +290,7 @@ module JamRuby
|
|||
|
||||
objs = rel.all
|
||||
srch = Search.new
|
||||
srch.search_type = :band_filter
|
||||
srch.page_num, srch.page_count = page, objs.total_pages
|
||||
srch.band_results_for_user(objs, current_user)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -18,14 +18,15 @@ describe 'Musician search' do
|
|||
# expects all the users
|
||||
num = User.musicians.count
|
||||
results = Search.musician_filter({ :per_page => num })
|
||||
expect(results.filter_results.count).to eq(num)
|
||||
expect(results.results.count).to eq(num)
|
||||
expect(results.search_type).to be(:musicians_filter)
|
||||
end
|
||||
|
||||
it "finds musicians with proper ordering" do
|
||||
# the ordering should be create_at since no followers exist
|
||||
expect(UserFollower.count).to eq(0)
|
||||
results = Search.musician_filter({ :per_page => User.musicians.count })
|
||||
results.filter_results.each_with_index do |uu, idx|
|
||||
results.results.each_with_index do |uu, idx|
|
||||
expect(uu.id).to eq(@users.reverse[idx].id)
|
||||
end
|
||||
end
|
||||
|
|
@ -41,10 +42,10 @@ describe 'Musician search' do
|
|||
# refresh the order to ensure it works right
|
||||
@user2.followers.concat([@user3, @user4, @user2])
|
||||
results = Search.musician_filter({ :per_page => @users.size }, @user3)
|
||||
expect(results.filter_results[0].id).to eq(@user2.id)
|
||||
expect(results.results[0].id).to eq(@user2.id)
|
||||
|
||||
# check the follower count for given entry
|
||||
expect(results.filter_results[0].search_follow_count.to_i).not_to eq(0)
|
||||
expect(results.results[0].search_follow_count.to_i).not_to eq(0)
|
||||
# check the follow relationship between current_user and result
|
||||
expect(results.is_follower?(@user2)).to be true
|
||||
end
|
||||
|
|
@ -53,7 +54,7 @@ describe 'Musician search' do
|
|||
# make sure pagination works right
|
||||
params = { :per_page => 2, :page => 1 }
|
||||
results = Search.musician_filter(params)
|
||||
expect(results.filter_results.count).to be 2
|
||||
expect(results.results.count).to be 2
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -96,7 +97,7 @@ describe 'Musician search' do
|
|||
Friendship.save(@user1.id, @user2.id)
|
||||
# search on user2
|
||||
results = Search.musician_filter({}, @user2)
|
||||
friend = results.filter_results.detect { |mm| mm.id == @user1.id }
|
||||
friend = results.results.detect { |mm| mm.id == @user1.id }
|
||||
expect(friend).to_not be_nil
|
||||
expect(results.friend_count(friend)).to be 1
|
||||
@user1.reload
|
||||
|
|
@ -115,7 +116,7 @@ describe 'Musician search' do
|
|||
expect(@user1.recordings.detect { |rr| rr == recording }).to_not be_nil
|
||||
|
||||
results = Search.musician_filter({},@user1)
|
||||
uu = results.filter_results.detect { |mm| mm.id == @user1.id }
|
||||
uu = results.results.detect { |mm| mm.id == @user1.id }
|
||||
expect(uu).to_not be_nil
|
||||
|
||||
expect(results.record_count(uu)).to be 1
|
||||
|
|
@ -130,28 +131,28 @@ describe 'Musician search' do
|
|||
make_recording(@user1)
|
||||
# order results by num recordings
|
||||
results = Search.musician_filter({ :orderby => 'plays' }, @user2)
|
||||
expect(results.filter_results[0].id).to eq(@user1.id)
|
||||
expect(results.results[0].id).to eq(@user1.id)
|
||||
|
||||
# add more data and make sure order still correct
|
||||
make_recording(@user2); make_recording(@user2)
|
||||
results = Search.musician_filter({ :orderby => 'plays' }, @user2)
|
||||
expect(results.filter_results[0].id).to eq(@user2.id)
|
||||
expect(results.results[0].id).to eq(@user2.id)
|
||||
end
|
||||
|
||||
it "by now playing" do
|
||||
# should get 1 result with 1 active session
|
||||
make_session(@user3)
|
||||
results = Search.musician_filter({ :orderby => 'playing' }, @user2)
|
||||
expect(results.filter_results.count).to be 1
|
||||
expect(results.filter_results.first.id).to eq(@user3.id)
|
||||
expect(results.results.count).to be 1
|
||||
expect(results.results.first.id).to eq(@user3.id)
|
||||
|
||||
# should get 2 results with 2 active sessions
|
||||
# sort order should be created_at DESC
|
||||
make_session(@user4)
|
||||
results = Search.musician_filter({ :orderby => 'playing' }, @user2)
|
||||
expect(results.filter_results.count).to be 2
|
||||
expect(results.filter_results[0].id).to eq(@user4.id)
|
||||
expect(results.filter_results[1].id).to eq(@user3.id)
|
||||
expect(results.results.count).to be 2
|
||||
expect(results.results[0].id).to eq(@user4.id)
|
||||
expect(results.results[1].id).to eq(@user3.id)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -166,10 +167,10 @@ describe 'Musician search' do
|
|||
ii = @user1.instruments.detect { |inst| inst.id == 'tuba' }
|
||||
expect(ii).to_not be_nil
|
||||
results = Search.musician_filter({ :instrument => ii.id })
|
||||
results.filter_results.each do |rr|
|
||||
results.results.each do |rr|
|
||||
expect(rr.instruments.detect { |inst| inst.id=='tuba' }.id).to eq(ii.id)
|
||||
end
|
||||
expect(results.filter_results.count).to be 1
|
||||
expect(results.results.count).to be 1
|
||||
end
|
||||
|
||||
it "finds musicians within a given distance of given location" do
|
||||
|
|
@ -179,26 +180,26 @@ describe 'Musician search' do
|
|||
results = Search.musician_filter({ :per_page => num,
|
||||
:distance => 10,
|
||||
:city => 'Apex' }, @user1)
|
||||
expect(results.filter_results.count).to be num
|
||||
expect(results.results.count).to be num
|
||||
# long distance
|
||||
results = Search.musician_filter({ :per_page => num,
|
||||
:distance => 1000,
|
||||
:city => 'Miami',
|
||||
:state => 'FL' }, @user1)
|
||||
expect(results.filter_results.count).to be num
|
||||
expect(results.results.count).to be num
|
||||
end
|
||||
|
||||
it "finds musicians within a given distance of users location" do
|
||||
expect(@user1.lat).to_not be_nil
|
||||
# uses the location of @user1
|
||||
results = Search.musician_filter({ :distance => 10, :per_page => User.musicians.count }, @user1)
|
||||
expect(results.filter_results.count).to be User.musicians.count
|
||||
expect(results.results.count).to be User.musicians.count
|
||||
end
|
||||
|
||||
it "finds no musicians within a given distance of location" do
|
||||
expect(@user1.lat).to_not be_nil
|
||||
results = Search.musician_filter({ :distance => 10, :city => 'San Francisco' }, @user1)
|
||||
expect(results.filter_results.count).to be 0
|
||||
expect(results.results.count).to be 0
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue