diff --git a/web/app/views/clients/_addTrack.html.erb b/web/app/views/clients/_addTrack.html.erb index 190d61198..d1a1bdcc0 100644 --- a/web/app/views/clients/_addTrack.html.erb +++ b/web/app/views/clients/_addTrack.html.erb @@ -51,7 +51,7 @@
- ADD NEW AUDIO GEAR + ADD NEW AUDIO GEAR
CANCEL  diff --git a/web/app/views/clients/_configureTrack.html.erb b/web/app/views/clients/_configureTrack.html.erb index 9adb72c32..045dec160 100644 --- a/web/app/views/clients/_configureTrack.html.erb +++ b/web/app/views/clients/_configureTrack.html.erb @@ -172,7 +172,7 @@
CANCEL  diff --git a/web/spec/features/in_session_spec.rb b/web/spec/features/in_session_spec.rb index 96716d19f..012aba06f 100644 --- a/web/spec/features/in_session_spec.rb +++ b/web/spec/features/in_session_spec.rb @@ -7,7 +7,7 @@ describe "In a Session", :js => true, :type => :feature, :capybara_feature => tr before(:all) do Capybara.javascript_driver = :poltergeist Capybara.current_driver = Capybara.javascript_driver - Capybara.default_wait_time = 30 # these tests are SLOOOOOW + Capybara.default_wait_time = 15 end let(:user) { FactoryGirl.create(:user) } @@ -15,22 +15,53 @@ describe "In a Session", :js => true, :type => :feature, :capybara_feature => tr before(:each) do UserMailer.deliveries.clear + MusicSession.delete_all end - it "isn't possible to see a private session until it is made public", :slow => true do - MusicSession.delete_all + it "can't see a private session until it is made public", :slow => true do create_session(user, description = "Public or private, I cant decide!") set_session_as_private(user) in_client(finder) do sign_in_poltergeist finder visit "/client#/findSession" - # verify private session is not found - expect(page).to have_selector('#sessions-none-found') + expect(page).to have_selector('#sessions-none-found') # verify private session is not found end set_session_as_public(user) join_session(finder, description) # verify the public session is able to be joined - end + + + it "can open the Configure Tracks modal, and Add New Audio Gear", :slow => true do + create_session(user, description = "I'm gonna bail at some point!") + join_session(finder, description) + + assert_all_tracks_seen(users=[user, finder]) + + in_client(user) do + find('#track-settings').trigger(:click) + wait_for_ajax + expect(page).to have_selector('h1', text: 'configure tracks') + + find('#btn-add-new-audio-gear').trigger(:click) + wait_for_ajax + expect(page).to have_selector('h1', text: 'add new audio gear') + + find('#btn-leave-session-test').trigger(:click) + wait_for_ajax + expect(page).to have_selector('h1', text: 'audio gear setup') + end + + leave_music_session_sleep_delay + in_client(finder) { expect(page).to_not have_selector('div.track-label', text: user.name) } + end + + it "can see all tracks with four users", :slow => true do + others = Array.new + 3.times { others.push FactoryGirl.create(:user) } + create_join_session(user, others) + assert_all_tracks_seen(others.push user) + end + end diff --git a/web/spec/features/music_sessions_spec.rb b/web/spec/features/music_sessions_spec.rb index c3bbec2c8..897dff470 100644 --- a/web/spec/features/music_sessions_spec.rb +++ b/web/spec/features/music_sessions_spec.rb @@ -2,13 +2,6 @@ require 'spec_helper' describe "Music Session", :js => true, :type => :feature, :capybara_feature => true, :slow => true do - def leave_music_session_sleep_delay - # add a buffer to ensure WSG has enough time to expire - sleep_dur = (Rails.application.config.websocket_gateway_connect_time_stale + - Rails.application.config.websocket_gateway_connect_time_expire) * 1.4 - sleep sleep_dur - end - def leave_music_session_cleanly(usr) usr.music_session_histories.count.should be == 1 usr.music_session_user_histories.count.should be == 1 diff --git a/web/spec/support/utilities.rb b/web/spec/support/utilities.rb index fbac1aa66..2db6636c5 100644 --- a/web/spec/support/utilities.rb +++ b/web/spec/support/utilities.rb @@ -44,6 +44,14 @@ def sign_out() end +def leave_music_session_sleep_delay + # add a buffer to ensure WSG has enough time to expire + sleep_dur = (Rails.application.config.websocket_gateway_connect_time_stale + + Rails.application.config.websocket_gateway_connect_time_expire) * 1.4 + sleep sleep_dur +end + + def wait_for_ajax(wait=Capybara.default_wait_time) wait = wait * 10 #(because we sleep .1) @@ -72,6 +80,10 @@ def wait_until_curtain_gone should have_no_selector('.curtain') end +def wait_to_see_my_track + within('div.session-mytracks') {first('div.session-track.track')} +end + def determine_test_name(metadata, test_name_buffer = '') description = metadata[:description_args] if description.kind_of?(Array) @@ -157,4 +169,15 @@ def set_session_as_public(session_owner) find('#session-settings-dialog-submit').trigger(:click) end end +end + +def assert_all_tracks_seen(users=[]) + users.each do |user| + in_client(user) do + users.reject {|u| u==user}.each do |other| + expect(page).to have_selector('div.track-label', text: other.name) + #puts user.name + " is able to see " + other.name + "\'s track" + end + end + end end \ No newline at end of file