diff --git a/web/app/assets/javascripts/sessionList.js b/web/app/assets/javascripts/sessionList.js
index 49af23e00..af030147e 100644
--- a/web/app/assets/javascripts/sessionList.js
+++ b/web/app/assets/javascripts/sessionList.js
@@ -137,7 +137,7 @@
// wire up the Join Link to the T&Cs dialog
var $parentRow = $('tr[id=' + session.id + ']', tbGroup);
- $('#join-link', $parentRow).click(function(evt) {
+ $('.join-link', $parentRow).click(function(evt) {
joinClick(session.id);
});
}
diff --git a/web/app/views/clients/_findSession.html.erb b/web/app/views/clients/_findSession.html.erb
index 562dc7f06..af1d851c6 100644
--- a/web/app/views/clients/_findSession.html.erb
+++ b/web/app/views/clients/_findSession.html.erb
@@ -72,7 +72,7 @@
-
+
<%= image_tag "content/icon_join.png", :size => "19x22" %>
|
diff --git a/web/spec/features/find_sessions_spec.rb b/web/spec/features/find_sessions_spec.rb
index 8a1f618b2..680add9fc 100644
--- a/web/spec/features/find_sessions_spec.rb
+++ b/web/spec/features/find_sessions_spec.rb
@@ -31,33 +31,6 @@ describe "Find Session", :js => true, :type => :feature, :capybara_feature => tr
it "finds another public session", :slow => true do
-
- @unique_session_desc = 'Description found easily'
-
- # create session in one client
- in_client(:one) do
- page.driver.resize(1500, 600) # crude hack
- sign_in_poltergeist user
- visit "/client#/createSession"
-
- within('#create-session-form') do
- fill_in('description', :with => @unique_session_desc)
- select('Rock', :from => 'genres')
- find('div.intellectual-property ins').trigger(:click)
- click_link('btn-create-session') # fails if page width is low
- end
-
- # verify that the in-session page is showing
- expect(page).to have_selector('h2', text: 'my tracks')
- end
-
- # find session in second client
- in_client(:two) do
- sign_in_poltergeist finder
- visit "/client#/findSession"
-
- # verify the session description is seen by second client
- expect(page).to have_text(@unique_session_desc)
- end
+ create_join_session(user, [finder])
end
end
diff --git a/web/spec/features/music_sessions_spec.rb b/web/spec/features/music_sessions_spec.rb
index 149d22802..d09112208 100644
--- a/web/spec/features/music_sessions_spec.rb
+++ b/web/spec/features/music_sessions_spec.rb
@@ -2,20 +2,6 @@ require 'spec_helper'
describe "Music Session", :js => true, :type => :feature, :capybara_feature => true, :slow => true do
- def create_music_session
- uu = FactoryGirl.create(:user)
- sign_in_poltergeist uu
- visit "/client#/createSession"
- sleep 3
- within('#create-session-form') do
- fill_in('description', :with => 'foobar')
- select('Ambient', :from => 'genres')
- find('div.intellectual-property ins').trigger(:click)
- click_link('btn-create-session')
- end
- uu
- 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 +
@@ -42,7 +28,7 @@ describe "Music Session", :js => true, :type => :feature, :capybara_feature => t
before(:each) do
UserMailer.deliveries.clear
pending
- @user1 = create_music_session
+ @user1, session_description = create_session
end
describe "cleanly leaves music session" do
@@ -77,14 +63,14 @@ describe "Music Session", :js => true, :type => :feature, :capybara_feature => t
before(:each) do
UserMailer.deliveries.clear
in_client(:user1_music_session) do
- @user1 = create_music_session
+ @user1, session_description = create_session
end
end
describe "cleanly leaves" do
it "should update music session and user session history" do
in_client(:user2_music_session) do
- @user2 = create_music_session
+ @user2, session_description = create_session
sleep 5
should have_link('session-leave')
click_link('session-leave')
@@ -100,7 +86,7 @@ describe "Music Session", :js => true, :type => :feature, :capybara_feature => t
describe "abruptly leaves" do
it "should update music session and user session history" do
in_client(:user2_music_session) do
- @user2 = create_music_session
+ @user2, session_description = create_session
sleep 5
should have_link('session-leave')
page.evaluate_script("JK.JamServer.close(true)")
diff --git a/web/spec/support/utilities.rb b/web/spec/support/utilities.rb
index 16cf3cb5e..7ad7153dc 100644
--- a/web/spec/support/utilities.rb
+++ b/web/spec/support/utilities.rb
@@ -6,7 +6,7 @@ end
def in_client(name) # to assist multiple-client RSpec/Capybara testing
- Capybara.session_name = name
+ Capybara.session_name = name.class == JamRuby::User ? name.id : name
yield
end
@@ -70,4 +70,70 @@ end
def wait_until_curtain_gone
should have_no_selector('.curtain')
+end
+
+def determine_test_name(metadata, test_name_buffer = '')
+ description = metadata[:description_args]
+ if description.kind_of?(Array)
+ description = description[0]
+ end
+ if metadata.has_key? :example_group
+ return determine_test_name(metadata[:example_group], "#{description} #{test_name_buffer}")
+ else
+ return "#{description} #{test_name_buffer}"
+ end
+end
+
+# takes, or creates, a unique session description which is returned for subsequent calls to join_session to use
+# in finding this session)
+def create_session(creator = FactoryGirl.create(:user), unique_session_desc = "create_join_session #{SecureRandom.urlsafe_base64}")
+
+ # create session in one client
+ in_client(creator) do
+ page.driver.resize(1500, 600) # makes sure all the elements are visible
+ sign_in_poltergeist creator
+ wait_until_curtain_gone
+ visit "/client#/createSession"
+ expect(page).to have_selector('h2', text: 'session info')
+
+ within('#create-session-form') do
+ fill_in('description', :with => unique_session_desc)
+ select('Rock', :from => 'genres')
+ find('div.intellectual-property ins').trigger(:click)
+ find('#btn-create-session').trigger(:click) # fails if page width is low
+ end
+
+ # verify that the in-session page is showing
+ expect(page).to have_selector('h2', text: 'my tracks')
+ end
+
+ return creator, unique_session_desc
+
+end
+
+
+# this code assumes that there are no music sessions in the database. it should fail on the
+# find('.join-link') call if > 1 session exists because capybara will complain of multile matches
+def join_session(joiner, unique_session_desc)
+
+ in_client(joiner) do
+ sign_in_poltergeist joiner
+ wait_until_curtain_gone
+ visit "/client#/findSession"
+
+ # verify the session description is seen by second client
+ expect(page).to have_text(unique_session_desc)
+ find('.join-link').trigger(:click)
+ find('#btn-accept-terms').trigger(:click)
+ expect(page).to have_selector('h2', text: 'my tracks')
+ end
+end
+
+def create_join_session(creator, joiners=[])
+ creator, unique_session_desc = create_session(creator)
+
+ # find session in second client
+ joiners.each do |joiner|
+ join_session(joiner, unique_session_desc)
+ end
end
\ No newline at end of file