debug and admin override UI

This commit is contained in:
Seth Call 2020-12-05 13:53:04 -06:00
parent 01bf30b4ce
commit adf5c7afe0
4 changed files with 115 additions and 76 deletions

View File

@ -12,13 +12,13 @@ describe ActiveMusicSession do
describe "participant_create" do describe "participant_create" do
let(:user) {FactoryGirl.create(:user)} let(:user) { FactoryGirl.create(:user) }
it "fails gracefully when no connection" do it "fails gracefully when no connection" do
music_session = FactoryGirl.create(:active_music_session, :creator => user, :musician_access => false) music_session = FactoryGirl.create(:active_music_session, :creator => user, :musician_access => false)
begin begin
ActiveMusicSession.participant_create(user, music_session.id, "junk", true, nil, 5) ActiveMusicSession.participant_create(user, music_session.id, "junk", true, nil, 5)
false.should be_true false.should be_true
rescue JamRuby::JamRecordNotFound => e rescue JamRuby::JamRecordNotFound => e
e.record_type.should eql "Connection" e.record_type.should eql "Connection"
@ -30,7 +30,7 @@ describe ActiveMusicSession do
it "succeeds no active music session" do it "succeeds no active music session" do
music_session = FactoryGirl.create(:music_session, :creator => user, :musician_access => false) music_session = FactoryGirl.create(:music_session, :creator => user, :musician_access => false)
conn = FactoryGirl.create(:connection, :user => user) conn = FactoryGirl.create(:connection, :user => user)
connection = ActiveMusicSession.participant_create(user, music_session.id, conn.client_id, true, nil, 5) connection = ActiveMusicSession.participant_create(user, music_session.id, conn.client_id, true, nil, 5)
connection.errors.any?.should be false connection.errors.any?.should be false
ActiveMusicSession.find(music_session.id) ActiveMusicSession.find(music_session.id)
end end
@ -38,14 +38,14 @@ describe ActiveMusicSession do
it "fails gracefully when invalid music session Id" do it "fails gracefully when invalid music session Id" do
music_session = FactoryGirl.create(:active_music_session, :creator => user, :musician_access => false) music_session = FactoryGirl.create(:active_music_session, :creator => user, :musician_access => false)
conn = FactoryGirl.create(:connection, :user => user) conn = FactoryGirl.create(:connection, :user => user)
expect { ActiveMusicSession.participant_create(user, 'bad music session ID', conn.client_id, true, nil, 5) }.to raise_error(ActiveRecord::RecordNotFound) expect { ActiveMusicSession.participant_create(user, 'bad music session ID', conn.client_id, true, nil, 5) }.to raise_error(ActiveRecord::RecordNotFound)
end end
it "pulls out of other session" do it "pulls out of other session" do
music_session1 = FactoryGirl.create(:active_music_session, :creator => user, :musician_access => false) music_session1 = FactoryGirl.create(:active_music_session, :creator => user, :musician_access => false)
music_session2 = FactoryGirl.create(:active_music_session, :creator => user, :musician_access => false) music_session2 = FactoryGirl.create(:active_music_session, :creator => user, :musician_access => false)
conn = FactoryGirl.create(:connection, :user => user, music_session: music_session2) conn = FactoryGirl.create(:connection, :user => user, music_session: music_session2)
connection = ActiveMusicSession.participant_create(user, music_session1.id, conn.client_id, true, nil, 5) connection = ActiveMusicSession.participant_create(user, music_session1.id, conn.client_id, true, nil, 5)
connection.should eql conn connection.should eql conn
connection.errors.any?.should be true connection.errors.any?.should be true
end end
@ -54,7 +54,7 @@ describe ActiveMusicSession do
music_session1 = FactoryGirl.create(:active_music_session, :creator => user, :musician_access => false) music_session1 = FactoryGirl.create(:active_music_session, :creator => user, :musician_access => false)
conn = FactoryGirl.create(:connection) conn = FactoryGirl.create(:connection)
ActiveRecord::Base.connection.execute("update connections set user_id = NULL where connections.id = '#{conn.id}'") ActiveRecord::Base.connection.execute("update connections set user_id = NULL where connections.id = '#{conn.id}'")
expect { ActiveMusicSession.participant_create(user, music_session1.id, conn.client_id, true, nil, 5) }.to raise_error(JamRuby::JamPermissionError) expect { ActiveMusicSession.participant_create(user, music_session1.id, conn.client_id, true, nil, 5) }.to raise_error(JamRuby::JamPermissionError)
end end
end end
@ -305,10 +305,10 @@ describe ActiveMusicSession do
describe "index(as_musician: false)" do describe "index(as_musician: false)" do
let(:fan_access) { true } let(:fan_access) { true }
let(:creator) { FactoryGirl.create(:user) } let(:creator) { FactoryGirl.create(:user) }
let(:session) { FactoryGirl.create(:active_music_session, creator: creator, fan_access: fan_access ) } let(:session) { FactoryGirl.create(:active_music_session, creator: creator, fan_access: fan_access) }
let(:connection) { FactoryGirl.create(:connection, user: creator, :music_session => session) } let(:connection) { FactoryGirl.create(:connection, user: creator, :music_session => session) }
let(:user) {FactoryGirl.create(:user) } let(:user) { FactoryGirl.create(:user) }
describe "no mount" do describe "no mount" do
@ -422,25 +422,25 @@ describe ActiveMusicSession do
Friendship.save_using_models(creator, creator2) Friendship.save_using_models(creator, creator2)
music_sessions = ActiveMusicSession.friend_active_index(creator, {}).take(100) music_sessions = ActiveMusicSession.friend_active_index(creator, {}).take(100)
music_sessions.should_not be_nil music_sessions.should_not be_nil
music_sessions.length.should == 2 music_sessions.length.should == 2
end end
describe "parameters" do describe "parameters" do
let(:creator_1) { FactoryGirl.create(:user, last_jam_locidispid: 4, last_jam_audio_latency: 8) } let(:creator_1) { FactoryGirl.create(:user, last_jam_locidispid: 4, last_jam_audio_latency: 8) }
let(:creator_conn_1) { FactoryGirl.create(:connection, user: creator_1, ip_address: '4.4.4.4', locidispid: 4, addr:4) } let(:creator_conn_1) { FactoryGirl.create(:connection, user: creator_1, ip_address: '4.4.4.4', locidispid: 4, addr: 4) }
let(:creator_2) { FactoryGirl.create(:user, last_jam_locidispid: 1, last_jam_audio_latency: 10) } let(:creator_2) { FactoryGirl.create(:user, last_jam_locidispid: 1, last_jam_audio_latency: 10) }
let(:creator_conn_2) { FactoryGirl.create(:connection, user: creator_2, ip_address: '4.4.4.4', locidispid: 1, addr:1) } let(:creator_conn_2) { FactoryGirl.create(:connection, user: creator_2, ip_address: '4.4.4.4', locidispid: 1, addr: 1) }
let(:creator_3) { FactoryGirl.create(:user, last_jam_locidispid: 2, last_jam_audio_latency: 12) } let(:creator_3) { FactoryGirl.create(:user, last_jam_locidispid: 2, last_jam_audio_latency: 12) }
let(:creator_conn_3) { FactoryGirl.create(:connection, user: creator_3, ip_address: '5.5.5.5', locidispid: 2, addr:2) } let(:creator_conn_3) { FactoryGirl.create(:connection, user: creator_3, ip_address: '5.5.5.5', locidispid: 2, addr: 2) }
let(:searcher_1) { FactoryGirl.create(:user, last_jam_locidispid: 5, last_jam_audio_latency: 6) } let(:searcher_1) { FactoryGirl.create(:user, last_jam_locidispid: 5, last_jam_audio_latency: 6) }
let(:searcher_conn_1) { FactoryGirl.create(:connection, user: searcher_1, ip_address: '8.8.8.8', locidispid: 5, addr:5) } let(:searcher_conn_1) { FactoryGirl.create(:connection, user: searcher_1, ip_address: '8.8.8.8', locidispid: 5, addr: 5) }
let(:searcher_2) { FactoryGirl.create(:user, last_jam_locidispid: 3, last_jam_audio_latency: 14) } let(:searcher_2) { FactoryGirl.create(:user, last_jam_locidispid: 3, last_jam_audio_latency: 14) }
let(:searcher_conn_2) { FactoryGirl.create(:connection, user: searcher_2, ip_address: '9.9.9.9', locidispid: 3, addr:3) } let(:searcher_conn_2) { FactoryGirl.create(:connection, user: searcher_2, ip_address: '9.9.9.9', locidispid: 3, addr: 3) }
let!(:music_session_1) { FactoryGirl.create(:active_music_session, :creator => creator_1, genre: Genre.find('african'), language: 'eng', description: "Bunny Jumps" ) } let!(:music_session_1) { FactoryGirl.create(:active_music_session, :creator => creator_1, genre: Genre.find('african'), language: 'eng', description: "Bunny Jumps") }
let!(:music_session_2) { FactoryGirl.create(:active_music_session, :creator => creator_2, genre: Genre.find('ambient'), language: 'spa', description: "Play with us as we jam to beatles and bunnies") } let!(:music_session_2) { FactoryGirl.create(:active_music_session, :creator => creator_2, genre: Genre.find('ambient'), language: 'spa', description: "Play with us as we jam to beatles and bunnies") }
let(:tracks) { [{'sound' => 'mono', 'client_track_id' => 'abc', 'instrument_id' => 'piano'}] } let(:tracks) { [{'sound' => 'mono', 'client_track_id' => 'abc', 'instrument_id' => 'piano'}] }
@ -464,8 +464,8 @@ describe ActiveMusicSession do
music_sessions.length.should == 0 music_sessions.length.should == 0
rsvp_slot = FactoryGirl.create(:rsvp_slot, music_session: music_session_1.music_session, instrument: Instrument.find('piano')) rsvp_slot = FactoryGirl.create(:rsvp_slot, music_session: music_session_1.music_session, instrument: Instrument.find('piano'))
rsvp_request = FactoryGirl.create(:rsvp_request, user: searcher_1, chosen:true, music_session: music_session_1.music_session) rsvp_request = FactoryGirl.create(:rsvp_request, user: searcher_1, chosen: true, music_session: music_session_1.music_session)
rsvp_request_rsvp_slot = FactoryGirl.create(:rsvp_request_rsvp_slot, chosen:true, rsvp_request: rsvp_request, rsvp_slot:rsvp_slot) rsvp_request_rsvp_slot = FactoryGirl.create(:rsvp_request_rsvp_slot, chosen: true, rsvp_request: rsvp_request, rsvp_slot: rsvp_slot)
music_sessions = ActiveMusicSession.friend_active_index(searcher_1, {}) music_sessions = ActiveMusicSession.friend_active_index(searcher_1, {})
@ -487,33 +487,33 @@ describe ActiveMusicSession do
creator_conn_2.join_the_session(music_session_2.music_session, true, tracks, creator_2, 10) creator_conn_2.join_the_session(music_session_2.music_session, true, tracks, creator_2, 10)
creator_conn_2.errors.any?.should be_false creator_conn_2.errors.any?.should be_false
music_sessions = ActiveMusicSession.friend_active_index(searcher_1, {}) music_sessions = ActiveMusicSession.friend_active_index(searcher_1, {})
music_sessions.length.should == 2 music_sessions.length.should == 2
music_sessions[0].should == music_session_1.music_session music_sessions[0].should == music_session_1.music_session
music_sessions = ActiveMusicSession.friend_active_index(searcher_1, offset:0, limit:1) music_sessions = ActiveMusicSession.friend_active_index(searcher_1, offset: 0, limit: 1)
music_sessions.length.should == 1 music_sessions.length.should == 1
music_sessions[0].should == music_session_1.music_session music_sessions[0].should == music_session_1.music_session
music_sessions = ActiveMusicSession.friend_active_index(searcher_1, offset:1, limit:2) music_sessions = ActiveMusicSession.friend_active_index(searcher_1, offset: 1, limit: 2)
music_sessions.length.should == 1 music_sessions.length.should == 1
music_sessions[0].should == music_session_2.music_session music_sessions[0].should == music_session_2.music_session
end end
it "genre" do it "genre" do
# verify we can get all 2 sessions # verify we can get all 2 sessions
music_sessions = ActiveMusicSession.friend_active_index(searcher_1, {}) music_sessions = ActiveMusicSession.friend_active_index(searcher_1, {})
music_sessions.length.should == 2 music_sessions.length.should == 2
# get only african # get only african
music_sessions = ActiveMusicSession.friend_active_index(searcher_1, genre: 'african') music_sessions = ActiveMusicSession.friend_active_index(searcher_1, genre: 'african')
music_sessions.length.should == 1 music_sessions.length.should == 1
music_sessions[0].genre.should == Genre.find('african') music_sessions[0].genre.should == Genre.find('african')
# get only ambient # get only ambient
music_sessions = ActiveMusicSession.friend_active_index(searcher_1, genre: 'ambient') music_sessions = ActiveMusicSession.friend_active_index(searcher_1, genre: 'ambient')
music_sessions.length.should == 1 music_sessions.length.should == 1
music_sessions[0].genre.should == Genre.find('ambient') music_sessions[0].genre.should == Genre.find('ambient')
end end
it "language" do it "language" do
@ -534,29 +534,29 @@ describe ActiveMusicSession do
end end
it "keyword" do it "keyword" do
music_sessions = ActiveMusicSession.friend_active_index(searcher_1, keyword: 'Jump') music_sessions = ActiveMusicSession.friend_active_index(searcher_1, keyword: 'Jump')
music_sessions.length.should == 1 music_sessions.length.should == 1
music_sessions[0].should == music_session_1.music_session music_sessions[0].should == music_session_1.music_session
music_sessions = ams(searcher_1, keyword: 'Bunny') music_sessions = ams(searcher_1, keyword: 'Bunny')
music_sessions.length.should == 2 music_sessions.length.should == 2
music_sessions = ActiveMusicSession.friend_active_index(searcher_1, keyword: 'play') music_sessions = ActiveMusicSession.friend_active_index(searcher_1, keyword: 'play')
music_sessions.length.should == 1 music_sessions.length.should == 1
music_sessions = ActiveMusicSession.friend_active_index(searcher_1, keyword: 'bun') music_sessions = ActiveMusicSession.friend_active_index(searcher_1, keyword: 'bun')
music_sessions.length.should == 2 music_sessions.length.should == 2
music_sessions = ActiveMusicSession.friend_active_index(searcher_1, keyword: 'bunny play') music_sessions = ActiveMusicSession.friend_active_index(searcher_1, keyword: 'bunny play')
music_sessions.length.should == 1 music_sessions.length.should == 1
end end
end end
end end
end end
describe "ams_index", no_transaction: true do describe "ams_index", no_transaction: true do
it "does not crash" do it "does not crash" do
creator = FactoryGirl.create(:user, last_jam_locidispid: 1, last_jam_audio_latency: 5) creator = FactoryGirl.create(:user, last_jam_locidispid: 1, last_jam_audio_latency: 5)
@ -619,17 +619,17 @@ describe ActiveMusicSession do
describe "parameters" do describe "parameters" do
let(:creator_1) { FactoryGirl.create(:user, last_jam_locidispid: 4, last_jam_audio_latency: 8) } let(:creator_1) { FactoryGirl.create(:user, last_jam_locidispid: 4, last_jam_audio_latency: 8) }
let(:creator_conn_1) { FactoryGirl.create(:connection, user: creator_1, ip_address: '4.4.4.4', locidispid: 4, addr:4) } let(:creator_conn_1) { FactoryGirl.create(:connection, user: creator_1, ip_address: '4.4.4.4', locidispid: 4, addr: 4) }
let(:creator_2) { FactoryGirl.create(:user, last_jam_locidispid: 1, last_jam_audio_latency: 10) } let(:creator_2) { FactoryGirl.create(:user, last_jam_locidispid: 1, last_jam_audio_latency: 10) }
let(:creator_conn_2) { FactoryGirl.create(:connection, user: creator_2, ip_address: '4.4.4.4', locidispid: 1, addr:1) } let(:creator_conn_2) { FactoryGirl.create(:connection, user: creator_2, ip_address: '4.4.4.4', locidispid: 1, addr: 1) }
let(:creator_3) { FactoryGirl.create(:user, last_jam_locidispid: 2, last_jam_audio_latency: 12) } let(:creator_3) { FactoryGirl.create(:user, last_jam_locidispid: 2, last_jam_audio_latency: 12) }
let(:creator_conn_3) { FactoryGirl.create(:connection, user: creator_3, ip_address: '5.5.5.5', locidispid: 2, addr:2) } let(:creator_conn_3) { FactoryGirl.create(:connection, user: creator_3, ip_address: '5.5.5.5', locidispid: 2, addr: 2) }
let(:searcher_1) { FactoryGirl.create(:user, last_jam_locidispid: 5, last_jam_audio_latency: 6) } let(:searcher_1) { FactoryGirl.create(:user, last_jam_locidispid: 5, last_jam_audio_latency: 6) }
let(:searcher_conn_1) { FactoryGirl.create(:connection, user: searcher_1, ip_address: '8.8.8.8', locidispid: 5, addr:5) } let(:searcher_conn_1) { FactoryGirl.create(:connection, user: searcher_1, ip_address: '8.8.8.8', locidispid: 5, addr: 5) }
let(:searcher_2) { FactoryGirl.create(:user, last_jam_locidispid: 3, last_jam_audio_latency: 14) } let(:searcher_2) { FactoryGirl.create(:user, last_jam_locidispid: 3, last_jam_audio_latency: 14) }
let(:searcher_conn_2) { FactoryGirl.create(:connection, user: searcher_2, ip_address: '9.9.9.9', locidispid: 3, addr:3) } let(:searcher_conn_2) { FactoryGirl.create(:connection, user: searcher_2, ip_address: '9.9.9.9', locidispid: 3, addr: 3) }
let!(:music_session_1) { FactoryGirl.create(:active_music_session, :creator => creator_1, genre: Genre.find('african'), language: 'eng', description: "Bunny Jumps" ) } let!(:music_session_1) { FactoryGirl.create(:active_music_session, :creator => creator_1, genre: Genre.find('african'), language: 'eng', description: "Bunny Jumps") }
let!(:music_session_2) { FactoryGirl.create(:active_music_session, :creator => creator_2, genre: Genre.find('ambient'), language: 'spa', description: "Play with us as we jam to beatles and bunnies") } let!(:music_session_2) { FactoryGirl.create(:active_music_session, :creator => creator_2, genre: Genre.find('ambient'), language: 'spa', description: "Play with us as we jam to beatles and bunnies") }
let(:good_network_score) { 20 } let(:good_network_score) { 20 }
@ -656,16 +656,17 @@ describe ActiveMusicSession do
# grab just the 1st # grab just the 1st
ActiveRecord::Base.transaction do ActiveRecord::Base.transaction do
music_sessions, user_search = ams(searcher_1, client_id: searcher_conn_1.client_id, offset:0, limit:1) music_sessions, user_search = ams(searcher_1, client_id: searcher_conn_1.client_id, offset: 0, limit: 1)
music_sessions.length.should == 1 music_sessions.length.should == 1
music_sessions[0].should == music_session_1.music_session music_sessions[0].should == music_session_1.music_session
end end
# then the second # then the second
ActiveRecord::Base.transaction do ActiveRecord::Base.transaction do
music_sessions, user_search = ams(searcher_1, client_id: searcher_conn_1.client_id, offset:1, limit:2) music_sessions, user_search = ams(searcher_1, client_id: searcher_conn_1.client_id, offset: 1, limit: 2)
music_sessions.length.should == 1 music_sessions.length.should == 1
music_sessions[0].should == music_session_2.music_session end music_sessions[0].should == music_session_2.music_session
end
end end
it "genre" do it "genre" do
@ -926,17 +927,17 @@ describe ActiveMusicSession do
end end
describe "currently recording" do describe "currently recording" do
before(:each) do before(:each) do
@recording = FactoryGirl.create(:recording, :music_session => @music_session, :owner => @user1) @recording = FactoryGirl.create(:recording, :music_session => @music_session, :owner => @user1)
end end
it "is_recording? returns true if recording" do it "is_recording? returns true if recording" do
@music_session.is_recording?.should be_true @music_session.is_recording?.should be_true
end end
it "stop_recording should return recording object if recording" do it "stop_recording should return recording object if recording" do
@music_session.stop_recording.should == @recording @music_session.stop_recording.should == @recording
end end
end end
describe "open a recording" do describe "open a recording" do
@ -1078,8 +1079,8 @@ describe ActiveMusicSession do
describe "join_the_session" do describe "join_the_session" do
let(:creator_1) { FactoryGirl.create(:user, last_jam_locidispid: 4, last_jam_audio_latency: 8) } let(:creator_1) { FactoryGirl.create(:user, last_jam_locidispid: 4, last_jam_audio_latency: 8) }
let(:creator_conn_1) { FactoryGirl.create(:connection, user: creator_1, ip_address: '4.4.4.4', locidispid: 4, addr:4) } let(:creator_conn_1) { FactoryGirl.create(:connection, user: creator_1, ip_address: '4.4.4.4', locidispid: 4, addr: 4) }
let!(:music_session_1) { FactoryGirl.create(:active_music_session, :creator => creator_1, genre: Genre.find('african'), language: 'eng', description: "Bunny Jumps" ) } let!(:music_session_1) { FactoryGirl.create(:active_music_session, :creator => creator_1, genre: Genre.find('african'), language: 'eng', description: "Bunny Jumps") }
let(:tracks) { [{'sound' => 'mono', 'client_track_id' => 'abc', 'instrument_id' => 'piano'}] } let(:tracks) { [{'sound' => 'mono', 'client_track_id' => 'abc', 'instrument_id' => 'piano'}] }
let(:videos) { [{'client_video_source_id' => 'abc'}] } let(:videos) { [{'client_video_source_id' => 'abc'}] }
@ -1090,8 +1091,8 @@ describe ActiveMusicSession do
music_sessions = ActiveMusicSession.index(creator_1) music_sessions = ActiveMusicSession.index(creator_1)
music_sessions.should_not be_nil music_sessions.should_not be_nil
music_sessions.length.should == 1 music_sessions.length.should == 1
music_sessions[0].connections.should have(1).items music_sessions[0].connections.should have(1).items
music_sessions[0].connections.should have(1).items music_sessions[0].connections.should have(1).items
music_sessions[0].connections[0].tracks.should have(1).items music_sessions[0].connections[0].tracks.should have(1).items
music_sessions[0].connections[0].video_sources.should have(0).items music_sessions[0].connections[0].video_sources.should have(0).items
end end
@ -1103,12 +1104,12 @@ describe ActiveMusicSession do
music_sessions.should_not be_nil music_sessions.should_not be_nil
music_sessions.length.should == 1 music_sessions.length.should == 1
creator_conn_1.video_sources.should have(1).items creator_conn_1.video_sources.should have(1).items
music_sessions[0].connections.should have(1).items music_sessions[0].connections.should have(1).items
music_sessions[0].connections[0].video_sources.should have(1).items music_sessions[0].connections[0].video_sources.should have(1).items
music_sessions[0].connections[0].tracks.should have(1).items music_sessions[0].connections[0].tracks.should have(1).items
end end
end end
describe "open_backing_track" do describe "open_backing_track" do
before(:each) do before(:each) do
@user1 = FactoryGirl.create(:user) @user1 = FactoryGirl.create(:user)
@ -1119,7 +1120,7 @@ describe ActiveMusicSession do
# @music_session.connections << @connection # @music_session.connections << @connection
@music_session.save! @music_session.save!
@connection.join_the_session(@music_session, true, nil, @user1, 10) @connection.join_the_session(@music_session, true, nil, @user1, 10)
@backing_track = "foo/bar.mp3" @backing_track = "foo/bar.mp3"
end end
it "allow a backing track to be associated" do it "allow a backing track to be associated" do
@ -1178,6 +1179,34 @@ describe ActiveMusicSession do
end end
describe "play_time_remaining" do
it "checks all" do
user = FactoryGirl.create(:user)
music_session = FactoryGirl.create(:active_music_session, :creator => user, :musician_access => false)
user.subscription_plan_code = SubscriptionDefinitions::JAM_PLATINUM
music_session.play_time_remaining(user).should be_nil
user.subscription_plan_code = SubscriptionDefinitions::JAM_PLATINUM_YEARLY
music_session.play_time_remaining(user).should be_nil
user.subscription_plan_code = SubscriptionDefinitions::JAM_GOLD
music_session.play_time_remaining(user).should be_nil
user.subscription_plan_code = SubscriptionDefinitions::JAM_GOLD_YEARLY
music_session.play_time_remaining(user).should be_nil
user.subscription_plan_code = SubscriptionDefinitions::JAM_SILVER
music_session.play_time_remaining(user).should be_nil
user.subscription_plan_code = SubscriptionDefinitions::JAM_SILVER_YEARLY
music_session.play_time_remaining(user).should be_nil
user.subscription_plan_code = nil
music_session.play_time_remaining(user).should_not be_nil
end
end
describe "open_metronome" do describe "open_metronome" do
before(:each) do before(:each) do
@user1 = FactoryGirl.create(:user) @user1 = FactoryGirl.create(:user)
@ -1187,7 +1216,7 @@ describe ActiveMusicSession do
@music_session = FactoryGirl.create(:active_music_session, :creator => @user1, :musician_access => true) @music_session = FactoryGirl.create(:active_music_session, :creator => @user1, :musician_access => true)
# @music_session.connections << @connection # @music_session.connections << @connection
@music_session.save! @music_session.save!
@connection.join_the_session(@music_session, true, nil, @user1, 10) @connection.join_the_session(@music_session, true, nil, @user1, 10)
end end
it "allow a metronome to be activated" do it "allow a metronome to be activated" do
@ -1243,7 +1272,6 @@ describe ActiveMusicSession do
end end
it "one" do it "one" do
FactoryGirl.create(:active_music_session) FactoryGirl.create(:active_music_session)
ActiveMusicSession.stats.should eq('count' => 1, ActiveMusicSession.stats.should eq('count' => 1,

View File

@ -170,6 +170,7 @@ AppStore = context.AppStore
desired_plan_name = `<span className="plan-name">{this.getDisplayNameTier(this.props.subscription.desired_plan_code)}</span>` desired_plan_name = `<span className="plan-name">{this.getDisplayNameTier(this.props.subscription.desired_plan_code)}</span>`
admin_override_plan_name = `<span className="plan-name">{this.getDisplayNameTier(this.props.subscription.admin_override_plan_code)}</span>` admin_override_plan_name = `<span className="plan-name">{this.getDisplayNameTier(this.props.subscription.admin_override_plan_code)}</span>`
in_trial = @props.subscription.in_trial in_trial = @props.subscription.in_trial
admin_override = @props.subscription.admin_override_plan_code?
effective_is_free = !!this.props.subscription.plan_code effective_is_free = !!this.props.subscription.plan_code
has_pending_subscription = @props.subscription.subscription?.pending_subscription? has_pending_subscription = @props.subscription.subscription?.pending_subscription?
cancelled_subscription = @props.subscription.subscription?.remaining_billing_cycles == 0 cancelled_subscription = @props.subscription.subscription?.remaining_billing_cycles == 0
@ -178,7 +179,9 @@ AppStore = context.AppStore
#console.log("@props.subscription.subscription", @props.subscription.subscription, has_pending_subscription) #console.log("@props.subscription.subscription", @props.subscription.subscription, has_pending_subscription)
if in_trial if admin_override
explanation = `<span>You have a {effective_plan_name} account until your gifted plan ends {context.JK.formatDateShort(this.props.subscription.admin_override_ends_at)}.</span>`
else if in_trial
if @props.subscription.desired_plan_code if @props.subscription.desired_plan_code
if has_billing_info if has_billing_info
note = `<span>Billing starts for the {desired_plan_name} plan after the trial ends.</span>` note = `<span>Billing starts for the {desired_plan_name} plan after the trial ends.</span>`

View File

@ -1100,6 +1100,7 @@ ConfigureTracksActions = @ConfigureTracksActions
if @sessionRules.remaining_session_play_time? if @sessionRules.remaining_session_play_time?
until_time = new Date() until_time = new Date()
until_time = new Date(until_time.getTime() + @sessionRules.remaining_session_play_time * 1000) until_time = new Date(until_time.getTime() + @sessionRules.remaining_session_play_time * 1000)
console.log("subscription: session has remaining play time", until_time)
@sessionRules.remaining_session_until = until_time @sessionRules.remaining_session_until = until_time
@ -1116,6 +1117,7 @@ ConfigureTracksActions = @ConfigureTracksActions
until_time = new Date() until_time = new Date()
until_time = new Date(until_time.getTime() + @subscriptionRules.remaining_month_play_time * 1000) until_time = new Date(until_time.getTime() + @subscriptionRules.remaining_month_play_time * 1000)
#until_time.setSeconds(until_time.getSeconds() + @subscriptionRules.remaining_month_play_time) #until_time.setSeconds(until_time.getSeconds() + @subscriptionRules.remaining_month_play_time)
console.log("subscription: month has remaining play time", until_time)
@subscriptionRules.remaining_month_until = until_time @subscriptionRules.remaining_month_until = until_time
@currentSession = sessionData @currentSession = sessionData

View File

@ -152,6 +152,8 @@ class ApiRecurlyController < ApiController
subscription: subscription, has_billing_info: has_billing_info, subscription: subscription, has_billing_info: has_billing_info,
plan_code: current_user.subscription_plan_code, plan_code: current_user.subscription_plan_code,
desired_plan_code: current_user.desired_plan_code, desired_plan_code: current_user.desired_plan_code,
admin_override_plan_code: current_user.admin_override_plan_code,
admin_override_ends_at: current_user.admin_override_ends_at,
in_trial: !current_user.subscription_trial_ended?, in_trial: !current_user.subscription_trial_ended?,
trial_ends_at: current_user.subscription_trial_ends_at trial_ends_at: current_user.subscription_trial_ends_at
}, :status => 200 }, :status => 200
@ -179,6 +181,8 @@ class ApiRecurlyController < ApiController
subscription: subscription, has_billing_info: has_billing_info, subscription: subscription, has_billing_info: has_billing_info,
plan_code: current_user.subscription_plan_code, plan_code: current_user.subscription_plan_code,
desired_plan_code: current_user.desired_plan_code, desired_plan_code: current_user.desired_plan_code,
admin_override_plan_code: current_user.admin_override_plan_code,
admin_override_ends_at: current_user.admin_override_ends_at,
in_trial: !current_user.subscription_trial_ended?, in_trial: !current_user.subscription_trial_ended?,
trial_ends_at: current_user.subscription_trial_ends_at trial_ends_at: current_user.subscription_trial_ends_at
}, :status => 200 }, :status => 200
@ -219,6 +223,8 @@ class ApiRecurlyController < ApiController
has_billing_info: has_billing_info, has_billing_info: has_billing_info,
plan_code: current_user.subscription_plan_code, plan_code: current_user.subscription_plan_code,
desired_plan_code: current_user.desired_plan_code, desired_plan_code: current_user.desired_plan_code,
admin_override_plan_code: current_user.admin_override_plan_code,
admin_override_ends_at: current_user.admin_override_ends_at,
in_trial: !current_user.subscription_trial_ended?, in_trial: !current_user.subscription_trial_ended?,
trial_ends_at: current_user.subscription_trial_ends_at trial_ends_at: current_user.subscription_trial_ends_at
} }