From 72d6d4e699c2d0c55fcf0a8247afbc12af5cde52 Mon Sep 17 00:00:00 2001 From: Jonathan Kolyer Date: Mon, 28 Oct 2013 12:21:07 -0500 Subject: [PATCH] vrfs-774: second musician searches working properly (likers) --- ruby/lib/jam_ruby/models/user.rb | 4 ++++ .../jam_ruby/models/musician_search_spec.rb | 19 +++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/ruby/lib/jam_ruby/models/user.rb b/ruby/lib/jam_ruby/models/user.rb index 5fd2224c5..a042f1fae 100644 --- a/ruby/lib/jam_ruby/models/user.rb +++ b/ruby/lib/jam_ruby/models/user.rb @@ -925,6 +925,10 @@ module JamRuby case ordering = Search.order_param(params) when :liked + rel = rel.select("COUNT(likers) AS lcount, users.id") + rel = rel.joins("LEFT JOIN users_likers AS likers ON likers.user_id = users.id") + rel = rel.group("users.id") + rel = rel.order("COUNT(likers) DESC") when :followed rel = rel.select("COUNT(follows) AS fcount, users.id") rel = rel.joins("LEFT JOIN users_followers AS follows ON follows.user_id = users.id") diff --git a/ruby/spec/jam_ruby/models/musician_search_spec.rb b/ruby/spec/jam_ruby/models/musician_search_spec.rb index 61e9d0285..94d18343d 100644 --- a/ruby/spec/jam_ruby/models/musician_search_spec.rb +++ b/ruby/spec/jam_ruby/models/musician_search_spec.rb @@ -54,8 +54,23 @@ describe User do results.all.count.should == 2 end - it "should find all musicians sorted by follows with pagination" do - pending + it "should find all musicians sorted by likes with pagination" do + # establish sorting order + [@user2, @user3, @user1].each { |uu| User.create_user_like(@user4.id, uu.id) } + [@user2, @user4].each { |uu| User.create_user_like(@user3.id, uu.id) } + [@user2].each { |uu| User.create_user_like(@user2.id, uu.id) } + + # get all the users in correct order + params = { :per_page => @users.size, :orderby => :liked } + results = User.musician_search(params) + results.all.count.should == @users.size + results.each_with_index do |uu, idx| + uu.id.should == @users.reverse[idx].id + end + # refresh the order to ensure it works right + [@user3, @user4, @user1].each { |uu| User.create_user_like(@user2.id, uu.id) } + results = User.musician_search(params) + results[0].id.should == @user2.id end it "should find all musicians sorted by now playing" do