* refactoring relavent tests to use create_session/find_session utility
This commit is contained in:
parent
5e79e34634
commit
6198bccf3b
|
|
@ -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);
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@
|
|||
</a>
|
||||
</td>
|
||||
<td class="noborder" style="text-align:center; vertical-align:middle;">
|
||||
<a id="join-link" style="display:{join_link_display_style};">
|
||||
<a class="join-link" style="display:{join_link_display_style};">
|
||||
<%= image_tag "content/icon_join.png", :size => "19x22" %>
|
||||
</a>
|
||||
</td>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)")
|
||||
|
|
|
|||
|
|
@ -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
|
||||
Loading…
Reference in New Issue