VRFS-2219 active sessions should sort to top of Feed
This commit is contained in:
parent
14c9a5b469
commit
7856e43f1e
|
|
@ -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
|
||||
|
|
@ -0,0 +1 @@
|
|||
alter table feeds add column active BOOLEAN DEFAULT FALSE;
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue