VRFS-2219 active sessions should sort to top of Feed

This commit is contained in:
Brian Smith 2014-10-06 09:20:31 -04:00
parent 14c9a5b469
commit 7856e43f1e
6 changed files with 28 additions and 15 deletions

View File

@ -216,4 +216,4 @@ fix_find_session_sorting_2216c.sql
entabulate_current_network_scores.sql
discard_scores_changed.sql
emails_from_update.sql
add_active_feed.rb

1
db/up/add_active_feed.rb Normal file
View File

@ -0,0 +1 @@
alter table feeds add column active BOOLEAN DEFAULT FALSE;

View File

@ -47,13 +47,13 @@ module JamRuby
# handle sort
if sort == 'date'
query = query.where("feeds.id < #{start}")
query = query.order('feeds.id DESC')
query = query.order('feeds.active DESC, feeds.id DESC')
elsif sort == 'plays'
query = query.offset(start)
query = query.order("COALESCE(recordings.play_count, music_sessions.play_count) DESC ")
query = query.order("feeds.active DESC, COALESCE(recordings.play_count, music_sessions.play_count) DESC")
elsif sort == 'likes'
query = query.offset(start)
query = query.order("COALESCE(recordings.like_count, music_sessions.like_count) DESC ")
query = query.order("feeds.active DESC, COALESCE(recordings.like_count, music_sessions.like_count) DESC")
else
raise "sort not implemented: #{sort}"
end

View File

@ -74,6 +74,7 @@ module JamRuby
def add_to_feed
feed = Feed.new
feed.music_session = self
feed.active = true
end
@ -604,6 +605,12 @@ module JamRuby
hist.end_history if hist
feed = Feed.find_by_music_session_id(session_id)
unless feed.nil?
feed.active = false
feed.save
end
Notification.send_session_ended(session_id)
end

View File

@ -54,16 +54,16 @@ describe Feed do
end
describe "sorting" do
it "sorts by index (date) DESC" do
it "sorts by active flag / index (date) DESC" do
claimed_recording = FactoryGirl.create(:claimed_recording)
feeds, start = Feed.index(user1)
feeds.length.should == 2
feeds[0].recording.should == claimed_recording.recording
feeds[1].music_session.should == claimed_recording.recording.music_session.music_session
feeds[1].recording.should == claimed_recording.recording
feeds[0].music_session.should == claimed_recording.recording.music_session.music_session
end
it "sort by plays DESC" do
it "sort by active flag / plays DESC" do
claimed_recording1 = FactoryGirl.create(:claimed_recording)
claimed_recording2 = FactoryGirl.create(:claimed_recording)
@ -77,8 +77,8 @@ describe Feed do
feeds, start = Feed.index(user1, :sort => 'plays')
feeds.length.should == 4
feeds[0].recording.should == claimed_recording2.recording
feeds[1].recording.should == claimed_recording1.recording
feeds[2].recording.should == claimed_recording2.recording
feeds[3].recording.should == claimed_recording1.recording
FactoryGirl.create(:playable_play, playable: claimed_recording1.recording.music_session.music_session, user: user1)
FactoryGirl.create(:playable_play, playable: claimed_recording1.recording.music_session.music_session, user: user2)
@ -88,11 +88,11 @@ describe Feed do
feeds, start = Feed.index(user1, :sort => 'plays')
feeds.length.should == 4
feeds[0].music_session.should == claimed_recording1.recording.music_session.music_session
feeds[1].recording.should == claimed_recording2.recording
feeds[2].recording.should == claimed_recording1.recording
feeds[2].recording.should == claimed_recording2.recording
feeds[3].recording.should == claimed_recording1.recording
end
it "sort by likes DESC" do
it "sort by active flag / likes DESC" do
claimed_recording1 = FactoryGirl.create(:claimed_recording)
claimed_recording2 = FactoryGirl.create(:claimed_recording)
@ -106,6 +106,7 @@ describe Feed do
feeds, start = Feed.index(user1, :sort => 'likes')
feeds.length.should == 4
feeds = feeds.where("feeds.music_session_id is null")
feeds[0].recording.should == claimed_recording2.recording
feeds[1].recording.should == claimed_recording1.recording
@ -116,8 +117,8 @@ describe Feed do
feeds, start = Feed.index(user1, :sort => 'likes')
feeds.length.should == 4
feeds[0].music_session.should == claimed_recording1.recording.music_session.music_session
feeds[1].recording.should == claimed_recording2.recording
feeds[2].recording.should == claimed_recording1.recording
feeds[2].recording.should == claimed_recording2.recording
feeds[3].recording.should == claimed_recording1.recording
end
end
@ -195,6 +196,8 @@ describe Feed do
it "supports date pagination" do
claimed_recording = FactoryGirl.create(:claimed_recording)
MusicSession.removed_music_session(claimed_recording.recording.music_session.music_session.id)
options = {limit: 1}
feeds, start = Feed.index(user1, options)
feeds.length.should == 1

View File

@ -94,6 +94,8 @@ describe ApiFeedsController do
claimed_recording.recording.created_at = 3.days.ago
claimed_recording.recording.save!
MusicSession.removed_music_session(claimed_recording.recording.music_session.music_session.id)
get :index, { limit: 1 }
json = JSON.parse(response.body, :symbolize_names => true)
json[:entries].length.should == 1