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