vrfs-774: added orderby for plays/playing; ui tweaks

This commit is contained in:
Jonathan Kolyer 2013-11-15 16:35:55 -06:00
parent a8160cca5c
commit 555d4f1139
3 changed files with 47 additions and 10 deletions

View File

@ -132,12 +132,21 @@ module JamRuby
sel_str = 'users.*'
case ordering = self.musician_order_param(params)
when :plays
sel_str = "COUNT(records)+COUNT(sessions) AS play_count, #{sel_str}"
rel = rel.joins("LEFT JOIN music_sessions AS sessions ON sessions.user_id = users.id")
rel = rel.joins("LEFT JOIN recordings AS records ON records.owner_id = users.id")
rel = rel.group("users.id")
rel = rel.order("play_count DESC, users.created_at DESC")
when :followed
sel_str = "COUNT(follows) AS search_follow_count, #{sel_str}"
rel = rel.joins("LEFT JOIN users_followers AS follows ON follows.user_id = users.id")
rel = rel.group("users.id")
rel = rel.order("COUNT(follows) DESC, users.created_at DESC")
when :playing
rel = rel.joins("LEFT JOIN connections ON connections.user_id = users.id")
.where(['connections.aasm_state != ? AND connections.music_session_id IS NOT NULL',
'expired'])
.order("users.created_at DESC")
end
rel = rel.select(sel_str)

View File

@ -72,19 +72,24 @@ describe User do
results.is_friend?(@user1).should == true
end
it "should have recording counter " do
connection = FactoryGirl.create(:connection, :user => @user1)
def make_recording(uu)
connection = FactoryGirl.create(:connection, :user => uu)
instrument = FactoryGirl.create(:instrument, :description => 'a great instrument')
track = FactoryGirl.create(:track, :connection => connection, :instrument => instrument)
music_session = FactoryGirl.create(:music_session, :creator => @user1, :musician_access => true)
music_session = FactoryGirl.create(:music_session, :creator => uu, :musician_access => true)
music_session.connections << connection
music_session.save
recording = Recording.start(music_session.id, @user1)
recording = Recording.start(music_session.id, uu)
recording.stop
recording.reload
genre = FactoryGirl.create(:genre)
recording.claim(@user1, "name", genre, true, true)
recording.claim(uu, "name", genre, true, true)
recording.reload
recording
end
it "should have recording counter " do
recording = make_recording(@user1)
recording.users.length.should == 1
recording.users.first.should == @user1
@user1.reload
@ -101,12 +106,35 @@ describe User do
results.session_count(uu).should == 1
end
it "should find all musicians sorted by plays " do
pending
it "should find musicians sorted by plays" do
make_recording(@user1)
results = Search.musician_search({ :orderby => 'plays' }, @user2)
results.musicians[0].id.should == @user1.id
make_recording(@user2)
make_recording(@user2)
results = Search.musician_search({ :orderby => 'plays' }, @user2)
results.musicians[0].id.should == @user2.id
end
it "should find all musicians sorted by now playing" do
pending
connection = FactoryGirl.create(:connection, :user => @user3)
music_session = FactoryGirl.create(:music_session, :creator => @user3, :musician_access => true)
music_session.connections << connection
music_session.save
results = Search.musician_search({ :orderby => 'playing' }, @user2)
results.musicians.count.should == 1
connection = FactoryGirl.create(:connection, :user => @user4)
music_session = FactoryGirl.create(:music_session, :creator => @user4, :musician_access => true)
music_session.connections << connection
music_session.save
results = Search.musician_search({ :orderby => 'playing' }, @user2)
results.musicians.count.should == 2
connection = FactoryGirl.create(:connection, :user => @user1)
music_session = FactoryGirl.create(:music_session, :creator => @user1, :musician_access => true)
music_session.connections << connection
music_session.save
results = Search.musician_search({ :orderby => 'playing' }, @user2)
results.musicians.count.should == 3
end
it "should find musicians with an instrument" do

View File

@ -9,7 +9,7 @@
<div class="" style="padding-top:3px; float:left">Instrument:</div>
<div id="find-musician-instrument" class="" style="float:left">
<%= select_tag(:instrument,
options_for_select([['Select Instrument', '']].concat(JamRuby::Instrument.all.collect { |ii| [ii.description, ii.id] })),
options_for_select([['Any', '']].concat(JamRuby::Instrument.all.collect { |ii| [ii.description, ii.id] })),
{:class => 'instrument-list'} ) %>
</div>
</div>
@ -17,7 +17,7 @@
<div style="float:left">
<div style="float:left">Within</div>
<div class="query-distance-params" style="height:25px; ">
<input id="musician_query_distance" type="text" name="query_distance" value="100" placeholder="100" />
<input id="musician_query_distance" type="text" name="query_distance" value="500" placeholder="500" />
</div>
<div style="float:left">miles of <span id="musician-filter-city"><%= current_user.current_city(request.remote_ip) %></span></div>
</div>