diff --git a/web/app/assets/javascripts/session.js b/web/app/assets/javascripts/session.js index 96d1dc55a..6b56facc9 100644 --- a/web/app/assets/javascripts/session.js +++ b/web/app/assets/javascripts/session.js @@ -840,7 +840,8 @@ context._.each(mixers, function(mixer) { var mediaType = mixer.media_type; - if(mediaType == 'RecordingTrack') { + // mediaType == null is for backwards compat with older clients. Can be removed soon + if(mediaType == null || mediaType == "" || mediaType == 'RecordingTrack') { recordingTrackMixers.push(mixer) } else if(mediaType == 'BackingTrack') { diff --git a/web/spec/features/feed_spec.rb b/web/spec/features/feed_spec.rb index 22a642e75..02035dbbf 100644 --- a/web/spec/features/feed_spec.rb +++ b/web/spec/features/feed_spec.rb @@ -203,4 +203,32 @@ describe "Feed", :js => true, :type => :feature, :capybara_feature => true do end + describe "session participants behavior (VRFS-2193)" do + let(:creator) { FactoryGirl.create(:user) } + let(:finder_1) { FactoryGirl.create(:user) } + let(:finder_2) { FactoryGirl.create(:user) } + + specify "after session ends all participants are shown in Feed" do + creator, description = create_join_session creator, finder_1 + # feed shows user, finder_1 + formal_leave_by(finder_1) + # feed shows user + join_session(finder_2, description: description) + # feed shows user, finder_2 + formal_leave_by(finder_2) + formal_leave_by(creator) + + #leave_music_session_sleep_delay #erg + in_client(creator) { verify_feed_shows_users creator, finder_1, finder_2 } + end + + specify "during session only current participants are shown in Feed" do + creator, description = create_join_session creator, finder_1 + formal_leave_by(finder_1) + join_session(finder_2, description: description) + + #leave_music_session_sleep_delay #erg + in_client(finder_1) { verify_feed_shows_users finder_2, creator } + end + end end diff --git a/web/spec/features/in_session_spec.rb b/web/spec/features/in_session_spec.rb index 0d4215320..a657162c1 100644 --- a/web/spec/features/in_session_spec.rb +++ b/web/spec/features/in_session_spec.rb @@ -21,7 +21,7 @@ describe "In a Session", :js => true, :type => :feature, :capybara_feature => tr description = "Public or private, I cant decide!" create_session(creator: user, description: description) in_client(user) do - set_session_as_private + set_session_access :private end in_client(finder) do emulate_client @@ -31,7 +31,7 @@ describe "In a Session", :js => true, :type => :feature, :capybara_feature => tr sign_out_poltergeist(validate: true) end in_client(user) do - set_session_as_public + set_session_access :public end join_session(finder, description: description) # verify the public session is able to be joined end @@ -88,7 +88,7 @@ describe "In a Session", :js => true, :type => :feature, :capybara_feature => tr creator, description = create_join_session(user, [finder]) in_client(user) do - set_session_as_private + set_session_access :private formal_leave_by user sign_out_poltergeist user end diff --git a/web/spec/support/utilities.rb b/web/spec/support/utilities.rb index 872bd736a..fa4638405 100644 --- a/web/spec/support/utilities.rb +++ b/web/spec/support/utilities.rb @@ -464,6 +464,12 @@ def join_session(joiner, options) end end +def request_to_join_session(joiner, options) + join_session(joiner, options.merge(no_verify: true)) + find('#btn-alert-ok').trigger(:click) + # page.should have_no_selector('h1', text: 'Alert') +end + def emulate_client @@ -475,7 +481,7 @@ def create_join_session(creator, joiners=[], options={}) creator, unique_session_desc = create_session(options) # find session in second client - joiners.each do |joiner| + [*joiners].each do |joiner| join_session(joiner, description: unique_session_desc) end @@ -490,6 +496,21 @@ def formal_leave_by user end end +def verify_feed_shows_users *users + users = [*users] + visit "/client#/feed" + find('.feed-details a.details').trigger(:click) + within 'div.music-session-history-entry' do + users.each do |user| + # confirm user avatar exists + find("a.avatar-tiny[user-id=\"#{user.id}\"][hoveraction=\"musician\"] img") + + # confirm user name exists + find("a.musician-name[user-id=\"#{user.id}\"][hoveraction=\"musician\"]", text: user.name) + end + end +end + def start_recording_with(creator, joiners=[], genre=nil) create_join_session(creator, joiners, {genre: genre}) in_client(creator) do @@ -529,22 +550,21 @@ def claim_recording(name, description) page.should have_no_selector('h1', text: 'recording finished') end -def set_session_as_private() - find('#session-settings-button').trigger(:click) - within('#session-settings-dialog') do - jk_select("Only RSVP musicians may join", '#session-settings-dialog #session-settings-musician-access') - #select('Private', :from => 'session-settings-musician-access') - find('#session-settings-dialog-submit').trigger(:click) +def set_session_access access_type + case access_type + when :only_rsvp, :private + access_level = "Only RSVP musicians may join" + when :by_approval + access_level = "Musicians may join by approval" + when :at_will, :public, :open + access_level = "Musicians may join at will" + else + access_level = "Musicians may join at will" end - # verify it's dismissed - page.should have_no_selector('h1', text: 'update session settings') -end -def set_session_as_public() find('#session-settings-button').trigger(:click) within('#session-settings-dialog') do - jk_select("Musicians may join at will", '#session-settings-dialog #session-settings-musician-access') - # select('Public', :from => 'session-settings-musician-access') + jk_select(access_level, '#session-settings-dialog #session-settings-musician-access') find('#session-settings-dialog-submit').trigger(:click) end # verify it's dismissed