diff --git a/web/app/views/clients/_session.html.erb b/web/app/views/clients/_session.html.erb index f90c4eb42..aa74a537e 100644 --- a/web/app/views/clients/_session.html.erb +++ b/web/app/views/clients/_session.html.erb @@ -38,7 +38,7 @@ - X  LEAVE + X  LEAVE diff --git a/web/spec/features/music_sessions_spec.rb b/web/spec/features/music_sessions_spec.rb new file mode 100644 index 000000000..9923e70b8 --- /dev/null +++ b/web/spec/features/music_sessions_spec.rb @@ -0,0 +1,73 @@ +require 'spec_helper' + +describe "Music Session", :js => true, :type => :feature, :capybara_feature => true do + + subject { page } + + before(:all) do + Capybara.javascript_driver = :poltergeist + Capybara.current_driver = Capybara.javascript_driver + Capybara.default_wait_time = 10 + end + + let(:user) { FactoryGirl.create(:user) } + + before(:each) do + UserMailer.deliveries.clear + @user = user + sign_in_poltergeist @user + visit "/#/createSession" + + within('#create-session-form') do + fill_in('description', :with => 'foobar') + select('Ambient', :from => 'genres') + check('intellectual-property') + click_link('btn-create-session') + end + end + + describe "last person cleanly leaves session", :slow => true do + it "should update music session and user session history" do + should have_link('session-leave') + click_link('session-leave') + # add a buffer of 10% to ensure we have enough time + sleep_dur = (Rails.application.config.websocket_gateway_connect_time_stale + + Rails.application.config.websocket_gateway_connect_time_expire) * 1.1 + sleep sleep_dur + + user.reload + user.music_session_histories.count.should be == 1 + user.music_session_user_histories.count.should be == 1 + user.music_session_histories[0].session_removed_at.should_not be_nil + user.music_session_user_histories[0].session_removed_at.should_not be_nil + end + end + + describe "last person abruptly leaves session", :slow => true do + it "should delete connection and update music session and user session history" do + should have_link('session-leave') + page.evaluate_script("JK.JamServer.close(true)") + + # add a buffer of 10% to ensure we have enough time + sleep_dur = (Rails.application.config.websocket_gateway_connect_time_stale + + Rails.application.config.websocket_gateway_connect_time_expire) * 1.1 + sleep sleep_dur + + user.reload + user.connections.count.should be == 0 + user.music_session_histories.count.should be == 1 + user.music_session_user_histories.count.should be == 1 + user.music_session_histories[0].session_removed_at.should_not be_nil + user.music_session_user_histories[0].session_removed_at.should_not be_nil + end + end + + describe "person cleanly leaves session" do + pending + end + + describe "person abruptly leaves session" do + pending + end + +end