vrfs988: fixed filter searchtype bug

This commit is contained in:
Jonathan Kolyer 2014-01-12 01:48:15 -06:00
parent 1a39f6296b
commit 48bde580ae
2 changed files with 23 additions and 23 deletions

View File

@ -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

View File

@ -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